变量在 if 语句 CSH 中没有被修改
variable is not modified in if statement 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
是 $?
的别名;所以它被 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
我有以下非常简单的代码:
#!/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
是 $?
的别名;所以它被 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