Выполнить другую команду после того, как команда BASH завершилась с успехом или ошибкой - PullRequest
0 голосов
/ 10 января 2020

Я хотел бы выполнить следующую команду ruby do_task.rb && say "done".

Проблема в том, что он ничего не говорит, если команда не выполнена. Как это исправить, чтобы оно всегда что-то говорило (я не против, если оно скажет «не удалось» вместо «выполнено» или просто всегда скажет «выполнено»).

Ответы [ 3 ]

6 голосов
/ 10 января 2020

Просто замените && точкой с запятой;

ruby do_task.rb;say "done"
4 голосов
/ 10 января 2020

Просто:

(ruby do_task.rb && say "done") || (say "fail")

Или, как предложено @ LéaGris, чтобы избежать появления необолочек,

{ ruby do_task.rb && say "done";}||say "fail"

Или

ruby do_task.rb; say "end"
2 голосов
/ 10 января 2020

Другой способ использования массива сообщений (нужна оболочка с массивами), проиндексированного с кодом возврата.

message=('success' 'failure')
ruby do_task.rb
say "${message[$?]}"

Также обратите внимание, что если код возврата ruby do_task.rb больше 1, вам понадобится массив с сообщениями в индексах для каждого кода возврата.

Для поддержки двоичного успеха или неудачи с помощью метода выше:

message=('success' 'failure')
ruby do_task.rb
say "${message[$(($?>0))]}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...