在bash中具有命令换行符的管道字符串?

在bash中具有命令换行符的管道字符串?,bash,Bash,我试图通过BASH将包含换行符的字符串传递给PHP脚本 #!/bin/bash REPOS="$1" REV="$2" message=$(svnlook log $REPOS -r $REV) changed=$(svnlook changed $REPOS -r $REV) /usr/bin/php -q /home/chad/www/mantis.localhost/scripts/checkin.php <<< "${message}\n${changed}"

我试图通过BASH将包含换行符的字符串传递给PHP脚本

#!/bin/bash

REPOS="$1"
REV="$2"

message=$(svnlook log $REPOS -r $REV)
changed=$(svnlook changed $REPOS -r $REV)

/usr/bin/php -q /home/chad/www/mantis.localhost/scripts/checkin.php <<< "${message}\n${changed}"
有没有办法将“\n”翻译成文字换行符

顺便问一下:尝试了什么

其中-e启用反斜杠转义的解释(根据
man echo

请注意,这也将解释在
${message}
${changed}
中可能存在的反斜杠转义


从bash手册: 这里是字符串

此处文件的一个变体,格式为:

<<<word
newline=$”\n

... 为了避免对
${message}
${changed}
中的潜在转义序列进行解释,请尝试在子shell中连接字符串(除非指定
-n
选项,否则在每个
回显
之后都会追加一个换行符):


括号执行子shell中的命令(如果没有给出括号,则只有第二个echo的输出将通过管道传输到php程序中)。

Nice!实际上是-e而不是-a,但这正是我要找的。是的,你是对的,我在想-e,但键入-a。。。我将更正此问题。
命令注意:echo和herdoc在字符串后打印一个
\n
。printf没有。因此,如果使用
echo-e
echo -e "${message}\n${changed}" | /usr/bin/php -q /home/chad/www/mantis.localhost/scripts/checkin.php 
<<<word
the_cmd <<< word
echo word | the_cmd
newline=$'\n'
... <<< "${message}${newline}${changed}"
... <<EOF
${message}${newline}${changed}
EOF
( echo "${message}" ; echo "${changed}" ) | /usr/bin/php -q /home/chad/www/mantis.localhost/scripts/checkin.php