我在BASH脚本中有以下代码:
start-stop-daemon --start --quiet --background \
--startas /bin/bash -- -c "$CMD; exec echo $?> $FILE"
其中CMD
是一些命令字符串,FILE
是输出文件位置。但是出于某种原因,FILE
中的输出始终为0,即使它应该给出不同的数字(1表示错误等)。
为什么会这样,我该如何解决?
答案 0 :(得分:2)
您的$?
会在当前shell的上下文中与$CMD
和$FILE
一起展开。
要解决此问题,您必须像\$?
一样逃避它,即
... /bin/bash -c "$CMD; exec echo \$? >$FILE"
答案 1 :(得分:0)
exec echo $?如果您的上一个命令成功运行,这将打印0。这就是为什么它在文件中打印0。你想要达到什么目的。