heredocコマンドをバックグラウンドで送信するには?

heredocコマンドをバックグラウンドで送信するには?

こんなheredocコマンドを送りたい

cat <<EOF
line 1
line 2
EOF

背景。 (実際のコマンドにはopenssl入力行が多く、完了するのに時間がかかります。)

execPHPで実行できるように、コマンドを文字列として保存する必要があります。

単に&記号を追加しても機能しません。

cat <<EOF
line 1
line 2
EOF &

私が試した他の組み合わせ(コマンドを角かっこ内に入れるなど)も機能しません。

どのように?

ベストアンサー1

ここで、-doc演算子(<<EOF、ここ)は一般的なリダイレクト演算子にすぎず、それに続くもの(同じ行!)は依然としてコマンドの一部です。

例えば

# from here-doc to file
cat <<EOF > foo.txt
...
EOF

# here-doc and some arguments to cat
cat <<EOF -n foo.txt
...
EOF

# two here-docs!
cat /dev/fd/3 /dev/fd/4 3<<EOF 4<<EOF
first
EOF
second
EOF

したがって、ファイルからリダイレクトするのと同じ操作を実行し、コマンドラインの&最後に次のように入力しますcat

cat <<EOF &
here-doc text
EOF

おすすめ記事