В учебниках и практических занятиях я часто вижу комбинированные команды. Например,
sudo apt-get update && sudo apt-get install pyrenamer
Там , кажется, четыре возможных разъемов: &, &&, ||и ;. Хотя & разъем для меня понятен (он отправляет процесс в фоновый режим и оставляет терминал доступным), не ясно, в чем разница между &&и ;. И я не знал, ||пока Кая комментарий.
Следующие вопросы касаются разницы между двумя разъемами, но в основном это делается в комментариях:
Итак, вот несколько связанных вопросов:
- В чем разница между
;и&&? - Когда вы должны использовать их соответственно? Было бы неплохо увидеть некоторые варианты использования: если я хочу выполнить команду, а затем после ее выключения мой компьютер, какой разъем выбрать?
- Каковы их преимущества и опасности ? Роби Басак упоминает в комментарии к этому ответу, что подобная команда
cd /somewhere_else; rm -Rf *может иметь разрушительные последствия, например, в случае сбоя первого элемента в цепочке команд. - Если уместно, откуда они берутся?
set -eостановит скрипт при сбое, как если бы все команды были связаны &&.
||он такой же, как и&&тот, за исключением того, что он выполняет вторую команду только в том случае, если первая вышла с ненулевым (неудачным) состоянием.