我试图通过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}"
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我看到文字"\n"而不是转义的换行符:
blah blah issue 0000002.\nU app/controllers/application_controller.rb
Run Code Online (Sandbox Code Playgroud)
有关如何将'\n'翻译成文字换行符的任何想法?
顺便说一下:<<在bash做什么?我知道<传递文件...
And*_*ner 21
尝试
echo -e "${message}\n${changed}" | /usr/bin/php -q /home/chad/www/mantis.localhost/scripts/checkin.php
Run Code Online (Sandbox Code Playgroud)
其中-e可以解释反斜杠转义(根据man echo)
请注意,这也将解释反斜杠,你可能有${message}和${changed}.
来自bash手册:Here Strings
这里文档的一个变体,格式是:
<<<word
Run Code Online (Sandbox Code Playgroud)
该字被扩展并在其标准输入上提供给命令.
所以我会说
the_cmd <<< word
Run Code Online (Sandbox Code Playgroud)
相当于
echo word | the_cmd
Run Code Online (Sandbox Code Playgroud)