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