我正在运行这样的命令,变量$OUTPUT
保存命令的结果。但我还想将命令本身保存到一个变量中,以便包含在状态电子邮件中。
OUTPUT=$(php -f $LOCATION/somefile.php -- -process "$INPUTFILE" 2>&1)
第一部分有效。然后我尝试了这个:
IMPORTCOMMAND='php -f' "$LOCATION"'/somefile.php -- -process'"$INPUTFILE"
但它似乎只是第二次执行命令,而不是将字符串保存到变量中。
编辑:
这是我如何创建电子邮件正文的模型。我在常规字符串周围加上单引号,然后在 bash 变量周围加上双引号。
BODY='<b color="red">Output:</b><br />'"$OUTPUT"'<b color="red">Command:</b> '"$IMPORTCOMMAND"
之后我尝试用 html "
" 替换换行符,如下所示:
BODY="${BODY//$'\n'/<br />}"
#changed $BODY="" to BODY="" per yaegashi's suggestion
在我遵循 yaegashi 的建议后,以下错误消失了:
/usr/local/bin/some-script.sh: line 59: <b: command not found
但原来的错误仍然存在,在IMPORTCOMMAND
变量赋值处。
答案1
我认为你引用了太多而且位置错误。
以下将尝试运行并且不设置 IMPORTCOMMAND,因为和somefile.php
之间有空格php -f
somefile.php.
IMPORTCOMMAND='php -f' "$LOCATION"'/somefile.php -- -process'"$INPUTFILE"
应该:
import_command="php -f $LOCATION/somefile.php -- -process $INPUTFILE"
output=$( ${import_command} 2>&1 )
OR(如果“LOCATION”或“INPUTFILE”包含空格)
import_command=( php -f "$LOCATION/somefile.php" -- -process "$INPUTFILE" )
output=$( "${import_command[@]}" 2>&1 )
并显示它:
BODY="<b color='red'>Output:</b><br />${output}
<b color='red'>Command:</b> ${import_command[*]}"