こんなheredocコマンドを送りたい
cat <<EOF
line 1
line 2
EOF
背景。 (実際のコマンドにはopenssl
入力行が多く、完了するのに時間がかかります。)
exec
PHPで実行できるように、コマンドを文字列として保存する必要があります。
単に&記号を追加しても機能しません。
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