&&
- логический оператор. ;
это простая последовательность.
В 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"