Nelle esercitazioni e nei tutorial vedo spesso i comandi combinati. Per esempio,
sudo apt-get update && sudo apt-get install pyrenamer
Sembra che ci siano quattro possibili connettori: &
, &&
, ||
e ;
. Sebbene il &
connettore sia chiaro per me (invia un processo in background e lascia disponibile il terminale), non è chiaro quale sia la differenza tra &&
e ;
. E non lo sapevo ||
fino al commento di Kaya.
Le seguenti domande riguardano la differenza tra i due connettori, ma lo fanno principalmente nei commenti:
Quindi, ecco una serie di domande correlate:
- Qual è la differenza tra
;
e&&
? - Quando dovresti usarli rispettivamente? Sarebbe bello vedere alcuni casi d'uso: se voglio eseguire un comando e dopo averlo spento il mio computer, quale connettore dovrei scegliere?
- Quali sono i loro vantaggi e pericoli ? Robie Basak menziona in un commento a questa risposta che un comando simile
cd /somewhere_else; rm -Rf *
può avere conseguenze distruttive se il primo elemento nella catena di comando fallisce, per esempio. - Se pertinente, da dove vengono?
set -e
interromperà lo script in caso di errore come se tutti i comandi fossero connessi &&
.
||
è lo stesso&&
tranne per il fatto che esegue il secondo comando solo se il primo è uscito con uno stato diverso da zero (non riuscito).