我想发送一个像这样的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