if [ "$b" -eq 5 ]; then a="$c"; else a="$d"; fi
Выражение cond && op1 || op2
, предлагаемое в других ответах, имеет присущую ошибку: если op1
имеет ненулевой статус выхода, op2
молча становится результатом; ошибка также не будет обнаружена в режиме -e
. Таким образом, это выражение безопасно использовать только в том случае, если op1
никогда не может завершиться ошибкой (например, :
, true
, если встроенное, или присвоение переменной без каких-либо операций, которые могут завершиться неудачей (например, вызовы деления и OS)).
Обратите внимание на кавычки ""
. Первая пара предотвратит синтаксическую ошибку, если $b
пусто или имеет пробел. Другие будут препятствовать переводу всех пробелов в одиночные пробелы.