无法使用变量设置 tcsh 退出状态
Cannot set tcsh exit status using a variable
我通常使用bash,但在这种情况下我必须使用tcsh。令我惊讶的是,我不能使用包含退出状态的变量作为 exit
:
的参数
[bash] tcsh
[tcsh] set status=2
[tcsh] echo $status
2
[tcsh] exit $status
exit
[bash] echo $?
0
exit
的文字参数确实按预期工作:
[bash] tcsh
[tcsh] exit 2
exit
[bash] echo $?
2
这到底是怎么回事?
$status
是一个内置的 C shell 变量,包含前一个命令的退出状态。尝试回显 $status
两次,您可以看到 tcsh 将 $status
的值更改为 0,即第一个 echo
命令的退出状态:
[bash] tcsh
[tcsh] set status=2
[tcsh] echo $status
2
[tcsh] echo $status
0
解决方案是只使用一个不是 C shell 内置变量的不同变量名:
[bash] tcsh
[tcsh] set result=2
[tcsh] echo $result
2
[tcsh] exit $result
exit
[bash] echo $?
2
我通常使用bash,但在这种情况下我必须使用tcsh。令我惊讶的是,我不能使用包含退出状态的变量作为 exit
:
[bash] tcsh
[tcsh] set status=2
[tcsh] echo $status
2
[tcsh] exit $status
exit
[bash] echo $?
0
exit
的文字参数确实按预期工作:
[bash] tcsh
[tcsh] exit 2
exit
[bash] echo $?
2
这到底是怎么回事?
$status
是一个内置的 C shell 变量,包含前一个命令的退出状态。尝试回显 $status
两次,您可以看到 tcsh 将 $status
的值更改为 0,即第一个 echo
命令的退出状态:
[bash] tcsh
[tcsh] set status=2
[tcsh] echo $status
2
[tcsh] echo $status
0
解决方案是只使用一个不是 C shell 内置变量的不同变量名:
[bash] tcsh
[tcsh] set result=2
[tcsh] echo $result
2
[tcsh] exit $result
exit
[bash] echo $?
2