【发布时间】:2012-11-02 02:05:45
【问题描述】:
尝试在两台机器上运行 IF 语句-
1.SunOS 5.8 Generic_Virtual sun4u sparc SUNW,Sun-Fire-V240 (bash)
2.SunOS 5.10 Generic_127112-11 i86pc i386 i86pc (tcsh)
我从 shell 运行的命令 -
if (echo 13 | grep -w
date +%e>/dev/null);然后回显“现在”;菲
它在机器 1 上运行良好。但在机器 2 上出现以下错误 (tcsh)-
if:表达式语法。
如何在 tcsh 中更正此问题?我需要从 crontab 文件中运行它-
30 09 * * * if (echo 13 | grep -w
date +%e>/dev/null);然后回显 “展示” ;菲
【问题讨论】:
-
您需要使用方括号而不是括号。喜欢
if [condition]; then doSomething; fi -
@NNzz 你为什么不把它写下来作为答案?
-
@NNzz:这并不完全正确。 [ 是一个程序,它返回 0 为真,1 为假。 () 是一个子shell调用,它也应该返回一些东西。
-
@d33tah:虽然通常有一个程序
/bin/test和一个名为/bin/[的链接,但[运算符自 UNIX™ System V 以来就已内置到 shell 中,甚至可能是 UNIX ™ System III(很长一段时间)。来自子 shell 的状态是在子 shell 中执行的最后一个命令的状态;在示例中,即为grep。 -
真实shell中
if的语法与sea-shell中的语法不同,两者都不会相遇。使用真贝壳;不要使用贝壳(将它们留在 C 岸上)。
标签: bash shell unix if-statement tcsh