在if语句CSH中未修改变量

问题描述

我有以下非常简单的代码

$Capslock::Esc
$Esc::Capslock

问题是$ status的最后一个回显为0,而第一个设置为退出代码为2? 为什么会这样呢?为什么状态不能在if语句中修改。在bash中执行此操作的效果与此完全相同。

解决方法

$status$?的别名;因此它会被echo覆盖。您需要使用其他变量名称:

set ls_status = 0
if ( 0 == 0 ) then
    ls ./dummyDir
    set ls_status = $?
    echo $ls_status
endif
echo $ls_status

输出:

ls: cannot access './dummyDir': No such file or directory
2
2