Сценарий оболочки еще для поиска шаблона в использовании файла, если

Это - мой сценарий, я хочу найти шаблон в файле. Я знаю статус выхода grep -q '<Pattern>' '<file>' && echo $? 0, если шаблон найден. Но я добираюсь если: ошибка Синтаксиса выражения.

 if ( (grep -q '<Pattern>' '<file>' && echo $?)==0  ) then
 echo "Pattern found"
 else
 echo "Pattern not found"
 endif
0
задан 28 August 2018 в 08:16

2 ответа

Я настоятельно рекомендовал бы не использовать 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 реализации, кажется, поддерживают это.

3
ответ дан 28 October 2019 в 01:56

я думаю, что Вы не закрыли условие с "fi".

попробуйте ниже его, должна быть работа.

если ((grep-q '' '' && повторяют $?) == 0) затем повторяют "Шаблон, найденный", еще повторяют "Шаблон, не найденный" fi

-1
ответ дан 28 October 2019 в 01:56

Другие вопросы по тегам:

Похожие вопросы: