我需要遍历一堆不同的场景(可变场景),但无法弄清楚如何在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的论点:
  • http://www.shlomifish.org/open-source/anti/csh/
  • http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/

  • 为了进行比较,这是您在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/

    10-13 07:27