我有以下非常简单的代码:
#!/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