&&
логический оператор ;
это простая последовательность.
В cmd1 && cmd2
, cmd2 будет запущен, только если cmd1 завершается с успешным кодом возврата.
Принимая во внимание cmd1; cmd2
, что cmd2 будет работать независимо от состояния выхода cmd1 (при условии, что вы не настроили свою оболочку на выход при всех сбоях в вашем скрипте или чем-то еще).
С другой стороны, при cmd1 || cmd2
использовании ||
логического оператора «ИЛИ» cmd2 будет запускаться только в случае сбоя cmd1 (возвращает ненулевой код завершения).
Эти логические операторы иногда используются в сценариях вместо базового оператора if. Например,
if [[ -f "$foo" ]]; then mv "$foo" "${foo%.txt}.mkd"; fi
... может быть более кратко достигнуто с помощью:
[[ -f "$foo" ]] && mv "$foo" "${foo%.txt}.mkd"
& (simple sequencing), && (conditional AND) and || (conditional OR)
.