为了说清楚,我会缩短我的bash脚本:
#!/bin/bash -e
p_time=$(expr 0 - 0)
echo ?
echo "process time(sec) is: " ${p_time}
文件将在" echo?"之前结束,但如果我改变" p_time = $(expr 0 - 0)"到" p_time = $(expr 3 - 0)",文件将正确结束 但是,如果我删除" -e"在第一句中,文件也正确结束 为什么会这样?
答案 0 :(得分:2)
bash -e
表示Exit immediately if a command exits with a non-zero status.
0 - 0
的结果为0
,因此expr 0 - 0
的退出代码为1
,Bash将立即退出。如果删除-e
,Bash将忽略expr 0 - 0
的退出代码,并将执行脚本中的所有命令。