首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tcsh中的IF语句错误

tcsh中的IF语句错误
EN

Stack Overflow用户
提问于 2012-11-14 18:35:47
回答 3查看 3.5K关注 0票数 2

通过tcsh执行IF语句时遇到问题。这对我来说很好-

代码语言:javascript
复制
#!/bin/bash
if echo `cal|tail -6|sed -e 's/^.\{3\}//' -e 's/.\{3\}$//' |tr -s '[:blank:]' '\n' | head -11|tail -10|tr -s '\n' ' '`|grep -w `date "+%e"`
then
        echo "present"
else
        echo "absent"
fi

这就是问题所在

代码语言:javascript
复制
#!/bin/tcsh
if echo `cal|tail -6|sed -e 's/^.\{3\}//' -e 's/.\{3\}$//' |tr -s '[:blank:]' '\n' | head -11|tail -10|tr -s '\n' ' '`|grep -w `date "+%e"`
then
        echo "present"
else
        echo "absent"
endif

得到这个错误-

代码语言:javascript
复制
if: Expression Syntax.
then: Command not found.

我真的需要使用"tcsh“来运行它。

EN

回答 3

Stack Overflow用户

发布于 2012-11-14 18:49:53

首先,您要知道您可以找到两个不同的shell系列,如下所示:

shell类型shell (Bash、zsh...)

  • C-syntax类型 (tcsh、csh...))

如您所见,Bash和tcsh不是来自同一个shell家族。因此,在tcsh上,if语句与bash语句略有不同。在您的例子中,关键字"then“放错了地方。尝试将其放在"if“行的末尾,如下所示:

代码语言:javascript
复制
#!/bin/tcsh
if(echo `cal|tail -6|sed -e 's/^.\{3\}//' -e 's/.\{3\}$//' \
|tr -s '[:blank:]' '\n' | head -11|tail -10|tr -s '\n' ' '`| \
grep -w `date "+%e"`) then
     echo "present"
else
     echo "absent"
endif

希望能有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2012-12-18 04:43:45

这在bash中是有效的,因为POSIX样式的shell中的if语句总是通过执行命令来工作的(而[恰好是test命令的别名)。

但是,tcsh中的if语句不是这样工作的。它们有自己的语法(在tcsh man page中的表达式中描述)。

尝试单独运行管道,然后在if中检查退出状态

代码语言:javascript
复制
cal | tail -6 | sed -e 's/^.\{3\}//' -e 's/.\{3\}$//' | tr -s '[:blank:]' '\n' | head -11 | tail -10 | tr -s '\n' ' ' | grep -w `date "+%e"` >/dev/null
if ( $? == 0 ) then
    echo "present"
else
    echo "absent"
endif
票数 0
EN

Stack Overflow用户

发布于 2017-12-19 21:43:57

我通常会这样做,保持条件语句简单。但是,您可以将变量塞进“if”中,然后只检查grep是否为空。

代码语言:javascript
复制
set present = `tail -6 .... | grep “”`

if ( $present != “” ) then
   echo “present”
else
   echo “not present”
endif 

您也可以使用“-x”来帮助调试#!/bin/tcsh -x。这么小的东西,一个用来检查你的变量的回声就可以了,但是“-x”可能会给你需要的所有信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13377152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档