Linux 在tcsh中找不到命令

Linux 在tcsh中找不到命令,linux,tcsh,Linux,Tcsh,我有这个代码的问题。我的任务完成得好吗?我给出了“q:找不到命令。位置不正确()。” 基于对()和空格的评论,以下是一个有效的版本: #!/bin/tcsh set h = 0 set q = 0 set a = 0 foreach val ( $* ) if ($val == "-h") then set h = 1 endif if ($val == "-q") then set q = 1 endif if

我有这个代码的问题。我的任务完成得好吗?我给出了“q:找不到命令。位置不正确()。”


基于对
()
和空格的评论,以下是一个有效的版本:

#!/bin/tcsh 

set h = 0
set q = 0
set a = 0

foreach val ( $* )
  if ($val == "-h") then
    set h = 1
  endif
  if ($val == "-q") then
    set q = 1
  endif
  if ($val != "-h" && $val != "-q") then
    set a = 1
  endif
end
  • s之后添加空格
  • &&
    放在
    ()
  • 使用
    set
    设置变量。Bourne shell只有
    x=y
    ,但*csh需要
    设置x=y

  • 您可能还想查看
    getopt
    ——如果您有该命令的Linux或GNU版本,它可以使选项解析更加标准化。

    您的
    ()
    字符周围需要空格。还值得检查一下,看看是否将处理您的
    #/bin/tcsh
    文件并标记任何其他问题。祝你好运。@shellter AFAIK,shellcheck只懂sh和bash。@Shawn:是的,刚刚检查过,不支持tcsh(或csh或…;-)。还列出了支持ksh的。。。。以前没有时间。祝大家好运。。。。修复那些
    (语句)
    ,以便在
    ()
    周围有空格。
    #!/bin/tcsh 
    
    set h = 0
    set q = 0
    set a = 0
    
    foreach val ( $* )
      if ($val == "-h") then
        set h = 1
      endif
      if ($val == "-q") then
        set q = 1
      endif
      if ($val != "-h" && $val != "-q") then
        set a = 1
      endif
    end