tcsh脚本if语句

use*_*679 2 shell tcsh

我需要遍历一堆不同的场景(变量情景),但无法弄清楚如何在tcsh shell脚本中使用if语句.获取错误"if:Expression Syntax"有人可以告诉我我的错误吗?简化代码如下!谢谢!

#!/bin/tcsh -f
#
set val = 0

foreach scen ( a b )

echo $scen

if ($scen==a) then
  echo $scen
else
  echo $val
endif
end
Run Code Online (Sandbox Code Playgroud)

ntc*_*tc2 6

解决您的问题

显然你需要围绕平等比较的空间==.这有效:

#!/bin/tcsh -f
#
set val = 0

foreach scen ( a b )

echo $scen

if ($scen == a) then
  echo $scen
else
  echo $val
endif
end
Run Code Online (Sandbox Code Playgroud)

生产:

a
a
b
0
Run Code Online (Sandbox Code Playgroud)

未经请求的建议

另外,除非你必须在这里使用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
Run Code Online (Sandbox Code Playgroud)

这里没有重要区别,但请参阅上面的文章,了解csh不是一个很好的选择.