у меня есть программа
set signal="Normal Completion of program MRGGRID"`
if ( $signal == "Normal Completion of program MRGGRID" ) then
echo "yes"
endif
Сообщение об ошибке
if: Expression Syntax.
у меня есть программа
set signal="Normal Completion of program MRGGRID"`
if ( $signal == "Normal Completion of program MRGGRID" ) then
echo "yes"
endif
Сообщение об ошибке
if: Expression Syntax.
Вам нужно добавить кавычки вокруг переменной $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 также работают так... Но сообщения об ошибках tcsh
почти всегда бесполезны (как вы видели), что является одной из причин, по которой обычно не рекомендуется использовать tcsh
для сценариев.
$signal:q
вместо "$signal"
.
- person Keith Thompson; 11.03.2015