我明白我可以使用$?查看上次执行的命令的退出代码,但是如果我想确定是否已经抛出自己的“退出0”或“退出1”该怎么办?
例如:
#!/bin/bash -e
trap "{ echo Exit code $?; exit; }" EXIT
exit 1
如果我运行这个脚本,它会打印出“退出代码0”,然后退出并退出代码1.我可以访问陷阱中的代码,还是我只是以错误的方式进行操作?换句话说,我希望这个简单的脚本打印出“退出代码1”。
答案 0 :(得分:4)
它是0,因为脚本开头的$?
由于双引号而被替换为0。
请改为尝试:
trap '{ echo Exit code $?; exit; }' EXIT
答案 1 :(得分:1)
任何终止的进程都会设置$?
,这意味着它会不断被覆盖。将$?
保存到一个单独命名的var,该var是唯一的,并在退出时回显。
修改