无法使用变量

时间:2016-09-29 16:37:19

标签: csh tcsh

我通常使用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

这到底是怎么回事?

1 个答案:

答案 0 :(得分:3)

$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