我惊讶地发现设置环境变量修改了最后一个存在的代码变量$?
:
$ false
$ echo $?
1
$ false
$ FOO=BAR
$ echo $?
0
$
bash 手册只说了这一点$?
:
($?) 扩展到最近执行的前台管道的退出状态。
正在设置的变量的退出代码记录在哪里?会失败吗?
答案1
如果右侧表达式无法计算,赋值可能会失败
例如
$ x=HELLO
$ x=$((1/0))
bash: 1/0: division by 0 (error token is "0")
$ echo $?
1
在这种情况下, 的值$x
保持不变:
$ echo $x
HELLO