Спробуйте:
my_command || { echo 'my_command failed' ; exit 1; }
Чотири зміни:
- Змінити
&&
на||
- Використання
{ }
замість( )
- Ввести
;
після exit
і
- пробіли після
{
і перед}
Оскільки ви хочете роздрукувати повідомлення та вийти лише тоді, коли команда завершиться невдало (виходить із ненульовим значенням), вам потрібно ||
не "an" &&
.
cmd1 && cmd2
запуститься, cmd2
коли це cmd1
вдасться (значення виходу 0
). Де як
cmd1 || cmd2
запуститься, cmd2
коли cmd1
не вдасться (значення виходу не нульове).
Використання ( )
змушує команду, що знаходиться всередині них, запускається в підколонці, а виклик exit
звідти змушує вас вийти з підкошти, а не оригінальної оболонки, отже, виконання триває у вихідній оболонці.
Щоб подолати це використання { }
Останні дві зміни потрібні bash.