Это - мой сценарий, я хочу найти шаблон в файле. Я знаю статус выхода grep -q '<Pattern>' '<file>' && echo $?
0, если шаблон найден. Но я добираюсь если: ошибка Синтаксиса выражения.
if ( (grep -q '<Pattern>' '<file>' && echo $?)==0 ) then
echo "Pattern found"
else
echo "Pattern not found"
endif
Я настоятельно рекомендовал бы не использовать csh
(или ее варианты) для новых сценариев, по причинам, обсужденным здесь, Почему я не должен программировать в csh?
Однако правильный синтаксис, кажется:
if ( { grep -q 'Pattern' file } ) then
echo "Pattern found"
else
echo "Pattern not found"
endif
т.е. внутренние скобки должны быть фигурными скобками, { ... }
. Вы не должны отзываться эхом $?
для тестирования статуса выхода.
С другой стороны, можно использовать $status
переменная:
grep -q 'Pattern' file
if ( $status == 0 ) then
echo "Pattern found"
else
echo "Pattern not found"
endif
В tcsh
, переменная $status
может быть заменен $?
- но не все csh
реализации, кажется, поддерживают это.
я думаю, что Вы не закрыли условие с "fi".
попробуйте ниже его, должна быть работа.
если ((grep-q '' '' && повторяют $?) == 0) затем повторяют "Шаблон, найденный", еще повторяют "Шаблон, не найденный" fi