如何将heredoc命令发送到后台?

如何将heredoc命令发送到后台?

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

相关内容