我想保存最后运行命令的退出状态(在文件中,在变量中,这并不重要),但这必须在交互式 shell 中自动完成,手动运行类似的东西var=$?
不是一种选择。
我决定尝试使用PROMPT_COMMAND
来完成这个。在下面,您可以看到我证明我尝试的方法无效。
/home/exit_status$ export PROMPT_COMMAND="echo $?"
0
/home/exit_status$ rm /
rm: cannot remove ‘/’: Is a directory
0
/home/exit_status$ echo $?
1
0
我该如何做才能使上面的代码片段按我的意图工作?我可以弄清楚如何存储它,我不需要帮助。我刚刚提到这一点是为了提供背景信息。
因为您使用了双引号,
$?
所以在您分配值时会被扩展 - 您可以使用以下方法进行验证set -x
:如果将双引号更改为单引号,您应该会得到所需的行为:
IE
只需将其放在命令后的 var 中即可。
$u
将承载状态直到重置。u=$?
,PROMPT_COMMAND
因为$u
每个命令都会覆盖。