Выйдите из сценария, если какое-либо утверждение не выполнено

Я использую вложенные операторы if в моем сценарии оболочки. Если какое-либо утверждение не выполняется, оно должно выйти из сценария без выполнения других разделов в сценарии. Я попытался использовать exit 1 и set -e .

Я не могу использовать set -e как я использовал несколько операторов grep которые возвращали бы ненулевой статус.

Может кто-нибудь, пожалуйста, помогите мне Как прекратить выполнение сценария, если какие-либо операторы не удается?

Вы все еще можете использовать set -e . Если у вас есть конкретное утверждение, которое вы ожидаете потерпеть неудачу, вам просто нужно перехватить состояние ошибки и «обработать» его:

 $ cat 454756.sh #!/bin/bash set -e [[ 1 -eq 2 ]] || : echo "Still got here!" $ ./454756.sh Still got here! 

set -e прервет выполнение сценария в случае возникновения ошибки. В противном случае вы не сможете использовать операторы if .

 # this also still works set -e if /bin/false; then echo "nope" else echo "yep" fi 

Заклинание || : || : является кратким способом «съесть» любую ошибку, выданную любой командой, что удобно, когда вы хотите использовать set -e и иметь конкретные команды, с ошибками которых все в порядке .

Другой способ сделать это – сбросить -e перед рассматриваемой командой и сбросить ее после:

 set -e do_stuff set +e /bin/false set -e