Убить команды после команды

Как убить следующие команды при выполнении условного цикла? Мое состояние такое, как показано ниже, и я хочу выйти из всего сценария, если он показывает эхо «не найдено», так что все, что приходит после этого цикла, не будет работать. Пожалуйста помогите. Я новичок в unix. Спасибо.

if grep -q 'pattern' 'file'; 
then 
    echo "found" 
else
    echo "not found"
fi
-1
18.03.2017, 01:03
2 ответа
if grep -q 'pattern' '/path/to/file'; 
then 
    echo "found" 
else
    echo "not found"
    exit 1
fi

man exit

Редактировать

Альтернатива:

grep -q 'pattern' '/path/to/file'
grep_ec=$?
if [ "$grep_ec" -eq "0" ]; then 
    echo "found" 
else
    echo "not found"
    exit $grep_ec
fi
1
28.01.2020, 05:08

Это можно сделать с помощью команды exit. Из man bash:

exit [n]

Заставить оболочку выйти со статусом n. Если n опущено, статус выхода соответствует статусу последней выполненной команды. Ловушка на EXIT выполняется до завершения работы оболочки.

if grep -q 'pattern' '/path/to/file'
then 
    echo "found" 
else
    echo "not found"
    exit
fi

Примечание: Точка с запятой в конце первой строки не нужна, если только вы не размещаете дополнительные команды в той же строке, например,

if grep -q 'pattern' '/path/to/file'; then
    echo "found" 
else
    echo "not found"
    exit
fi
1
28.01.2020, 05:08

Теги

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