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 -einterromperà 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).