
Questo articolo spiega come eseguire un comando al termine dell’esecuzione del comando precedente. Usando questo, puoi eseguire non solo 2 comandi, ma qualsiasi numero di comandi, dopo che il precedente è terminato. Funzionerà con Sh, Bash, Zsh e altre shell.
È possibile eseguire un comando dopo che il precedente è terminato, a seconda dello stato di uscita del comando precedente (se non è riuscito o meno) o indipendentemente da ciò. Quindi ci sono 3 possibili situazioni:
- eseguire un comando se il comando precedente è terminato correttamente,
- eseguire un comando se il comando precedente non è riuscito (se ha uno stato di uscita diverso da 0), oppure
- eseguire un comando indipendentemente dallo stato di uscita del comando precedente (non importa se è fallito o meno)
Diamo un’occhiata a ciascuno di questi casi di seguito.
Potrebbe interessarti anche: Come ripetere un comando ogni X secondi su Linux
Per eseguire più comandi in successione (attendere che il precedente finisca) solo se il comando precedente è uscito con successo, utilizzare il tasto &&  operatore tra i comandi.  Ad esempio (puoi avere un numero qualsiasi di comandi):
command1 && command2Se non ti interessa lo stato di uscita del comando precedente e vuoi solo eseguire un comando dopo che il precedente è terminato, usa il ;  separatore.  Esempio (puoi avere un numero qualsiasi di comandi):
command1; command2; command3Cosa succede se si desidera eseguire un comando dopo che il precedente ha terminato l’esecuzione, ma solo se questo comando precedente non è riuscito (se restituisce uno stato di uscita diverso da 0).  In tal caso, utilizzare il ||  separatore.  Ad esempio (ancora una volta, puoi avere un numero qualsiasi di comandi):
command1 || command2
Potrebbe interessarti anche: Come trovare i file modificati negli ultimi N giorni o minuti usando find
Puoi anche mischiare questi operatori.  In tal caso, puoi raggruppare i comandi usando {  e }. Perché funzioni, devi assicurarti di aggiungere un punto e virgola (;) prima } e uno spazio dopo {. Per esempio:
command1 || { command2; command3; }In questo esempio:
- correre command1e aspetta che finisca
- Se command1fallisce, passa ai comandi successivi (||):- correre command2e aspetta che finisca
- indipendentemente da command2lo stato di uscita di, esegui command3 (;)
 
- correre 
Un altro esempio:
{ command1 && command2; }; { command3 && command4; }In questo esempio:
- correre command1e aspetta che finisca
- Se command1ha esito positivo, esegui command2 e attendi che finisca (&&)
- a prescindere se command2ha avuto successo o no, o se ha funzionato o no, corricommand3e aspetta che finisca (il;dopo il primo})
- Se command3ha successo, corricommand4(&&)
Come promemoria, il ;  prima di ciascuno }  è richiesto quando si utilizza {}e non influisce sul modo in cui vengono eseguiti i comandi.
[[Edit]] L’articolo inizialmente utilizzava le parentesi (()) per mischiare gli operatori;  ma questo ha alcuni svantaggi (come l’esecuzione dei comandi in una subshell) rispetto all’uso delle parentesi graffe ({}), come sottolineato da Laurent in un commento qui sotto.  Quindi ho aggiornato l’articolo da usare {}  per questo.
Potrebbe interessarti: Come cambiare la shell predefinita in Linux

 
											 
											 
											 
											 
											 
											 
											 
											 
										 
																			 
										 
																			 
										 
																			 
										