2014-02-12 4 views

ответ

2

|| оператор будет оценивать команду2, если command1 возвращает ненужный (ошибка) код возврата.

variable=$(command1 || command2) 

Аналогично, & & оператор оценит command2 если command1 возвращает (ок) нулевой код возврата.

variable=$(command1 && command2) 

e.g. Присвоение переменной:

var=$(ls zasdasd || echo "file does not exist") 
echo $var ## outputs "file does not exist" 

выход Ошибка может быть подавлена ​​путем направления потока ошибки 2 в /dev/null

var=$(ls zasdasd || echo "file does not exist") 2>/dev/null 
1

Вы можете сделать:

variable=$(command1 2>/dev/null || command2 2>/dev/null) 

Это задаст выход command1 в variable, если он будет успешным, иначе он назначит вывод от command2.

2>/dev/null есть, чтобы подавить stderr в случае сбоя любой из команд.

Смежные вопросы