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