我需要遍历一堆不同的场景(可变场景),但无法弄清楚如何在 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 将是一个不好的选择。