Как выполнить логическое ИЛИ в Bash - PullRequest
4 голосов
/ 09 июля 2010

Я бы хотел, чтобы команда выполнялась только в том случае, если предыдущее состояние команды не было 0.

т.е. Команда 1 ^ Команда 2 где команда 2 выполняется только в случае сбоя команды 1.

Ответы [ 3 ]

7 голосов
/ 09 июля 2010

Для этого используйте оператор двойной трубы (||).

touch /asdf/fdasfds/fdasfdas || echo "Couldn't touch."

Вторая команда выполняется только тогда, когда первая команда возвращает ненулевое значение, точно как вы указали.

3 голосов
/ 18 апреля 2013

Я думаю, следует упомянуть, что это ИЛИ не имеет того же значения, что и XOR («исключающее или»). См. Таблицу истинности ниже.

       "or"          "xor"
P  Q  (( $P || $Q ))  (( ($P && ! $Q) || (! $P && $Q) ))
0  0  0               0 
0  1  1               1
1  0  1               1
1  1  1               0
1 голос
/ 09 июля 2010

Это должно работать:

command1 || command2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...