比较tcsh中的两个句子

时间:2015-03-11 15:17:16

标签: tcsh

我有一个程序

set signal="Normal Completion of program MRGGRID"`

if ( $signal == "Normal Completion of program MRGGRID" ) then
  echo "yes"
endif

错误消息是

if: Expression Syntax.

1 个答案:

答案 0 :(得分:0)

您需要在$signal中的if变量周围添加引号。

tcsh在使用之前扩展变量;最好不要将它们视为“变量”,而更多地将其视为“宏”,它在使用前会被扩展,因此您的if语句被解释为:

if ( Normal Completion of program MRGGRID == "Normal Completion of program MRGGRID" )

并且为:

if ( "Normal Completion of program MRGGRID" == "Normal Completion of program MRGGRID" )

这不是tcsh特定的,Bourne shell也是这样的......但是tcsh的错误信息几乎普遍没有用(正如你所见),这就是为什么它的原因之一通常不鼓励使用tcsh进行脚本编写。