【发布时间】:2020-11-12 17:57:21
【问题描述】:
我有以下非常简单的代码:
#!/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 中与此相同的等价物完美运行。
【问题讨论】:
-
另一个不用
csh/-; 编码的理由.这是一个简单的测试,除了将值保存到文件然后source(ing)file之外,我看不出解决你的问题。我没有要试验的 csh,所以我认为我无法提供额外的想法。祝你好运! -
如果你的工作需要你继续用csh编程,那就点Anderson and Anderson的“Guide to C Shell”(或类似的标题),写得很好,但不赘述
csh的问题。或向你的老板展示 [csh-considered-harmful]()。 -
实际上要简单得多@shellter;
$status只是$?的别名(反之亦然),因此它会被echo覆盖。这不是真的在 csh 的许多问题上 :-) -
谢谢大家......我只是迷上了支持别人的旧东西。老实说,我更喜欢 ksh 或 bash。
标签: csh