csh - 无法使用变量设置 tcsh 退出状态

标签 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

这里到底发生了什么?

最佳答案

$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

关于csh - 无法使用变量设置 tcsh 退出状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39775689/

相关文章:

linux - tcsh 以 ls -l 格式完成

linux - 如何在不更改 cd 的情况下更改 tcsh 中的目录 -

linux - 使用 tcsh 中的 if 条件进行模式匹配

scripting - 这个 C shell 脚本有什么问题?

perl - Shell 测试以查看二进制文件是否在您的路径中

linux - 读取用户输入(应该是 linux 命令)并执行

shell - csh 脚本错误 : Variable name must begin with a letter

csh - csh中删除最后一个单词的快捷键是什么?

csh - 在csh脚本中执行pwd命令

shell - 如何确定我的 csh 版本?