我是shell脚本方面的新手。如果命令失败,我想打印一条消息并退出我的脚本。我试过了:
my_command && (echo 'my_command failed; exit)
但它不起作用。它继续执行脚本中这一行后面的指令。我使用的是Ubuntu和bash。
发布于 2010-09-30 00:05:43
其他答案已经很好地涵盖了直接问题,但您也可能对使用set -e
感兴趣。这样,任何失败的命令(在特定上下文之外,如if
测试)都将导致脚本中止。对于某些脚本,它非常有用。
发布于 2013-10-20 02:33:18
如果您希望脚本中所有命令都具有这种行为,只需添加
set -e
set -o pipefail
在脚本的开头。这两个选项告诉bash解释器在命令返回非零退出代码时退出。(有关为什么需要pipefail
的更多详细信息,请参阅http://petereisentraut.blogspot.com/2010/11/pipefail.html)
但是,这不允许您打印退出消息。
发布于 2010-09-29 22:41:00
还要注意,每个命令的退出状态都存储在外壳变量$中,您可以在运行命令后立即检查该变量。非零状态表示故障:
my_command
if [ $? -eq 0 ]
then
echo "it worked"
else
echo "it failed"
fi
https://stackoverflow.com/questions/3822621
复制相似问题