我需要遍历一堆不同的场景(可变场景),但无法弄清楚如何在tcsh shell脚本中使用if语句。收到错误消息“如果:表达式语法”,有人可以告诉我我有什么问题吗?简化的代码如下!谢谢!
#!/bin/tcsh -f
#
set val = 0
foreach scen ( a b )
echo $scen
if ($scen==a) then
echo $scen
else
echo $val
endif
end
最佳答案
解决您的问题
显然,等式比较==
周围需要空格。这
作品:
#!/bin/tcsh -f
#
set val = 0
foreach scen ( a b )
echo $scen
if ($scen == a) then
echo $scen
else
echo $val
endif
end
生产:
a
a
b
0
不请自来的建议
另外,除非您必须在这里使用tcsh,否则我建议使用更好的
shell ,如bash或zsh。以下是一些反对csh和tcsh的论点:
为了进行比较,这是您在bash(和zsh)中的代码:
#!/bin/bash
# No space around equal sign in assignment!
val=0
for scen in a b; do
echo $scen
if [[ $scen == a ]]; then
echo $scen
else
echo $val
fi
done
这里没有重要的区别,但是请参阅上面的文章
csh将是一个糟糕选择的示例。
关于shell - tcsh脚本if语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19799021/