我有一个程序
set signal="Normal Completion of program MRGGRID"`
if ( $signal == "Normal Completion of program MRGGRID" ) then
echo "yes"
endif
错误消息是
if: Expression Syntax.
答案 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
进行脚本编写。