Как позволить команде unix grep прерваться в случае сбоя сопоставления с шаблоном - PullRequest
0 голосов
/ 15 марта 2019

У меня есть несколько команд Unix в сценарии."Cat file.txt | grep pattern" будет последовательно переходить к следующей команде, если она совпадает.В противном случае команда должна прерваться.Любые однострочные команды для достижения этой цели помогут.

Ответы [ 3 ]

1 голос
/ 15 марта 2019

Если вы используете bash или sh, вы можете установить опцию errexit следующим образом: set -o errexit

Если вы сделаете это, эта строка (и любая другая строка) прервет ваш скриптесли произойдет сбой:

grep pattern file.txt

В качестве альтернативы, вы можете просто использовать ||, например:

grep pattern file.txt || exit 1

Или, более подробно, использовать if:

if ! grep pattern file.txt; then
    exit 1
fi
0 голосов
/ 16 марта 2019
cat file.txt | grep pattern

можно записать как

grep pattern file.txt

. При неудаче можно пропустить следующую строку с помощью &&

grep pattern file.txt && 
   echo "I am the next line"

или выйти с помощью

grep pattern file.txt || { echo "Grep found nothing"; exit 1; }
0 голосов
/ 15 марта 2019

поместите вашу команду grep в цикл if else, если строка не совпадает, используйте команду exit 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...