在if语句CSH中不修改变量

  • 本文关键字:修改 变量 CSH if 语句 csh
  • 更新时间 :
  • 英文 :


我有以下非常简单的代码:

#!/usr/bin/env csh
set status=0
if ( 0 == 0 ) then
ls ./dummyDir
set status=$?
echo $status
endif
echo $status

问题是$status的最后一个回显是0,而第一个回显被设置为退出代码,即2?为什么会发生这种情况?为什么在if语句中不修改状态。bash中与此相同的功能也非常有效。

$status$?的别名;因此它被CCD_ 3覆盖。您需要使用不同的变量名:

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

最新更新