Connect with us

Linux

Come eseguire un comando dopo che il precedente è terminato su Linux


come eseguire un comando dopo che il precedente è terminato su Linux

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 && command2

Se 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; command3

Cosa 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 command1 e aspetta che finisca
  • Se command1 fallisce, passa ai comandi successivi (||):
    • correre command2 e aspetta che finisca
    • indipendentemente da command2lo stato di uscita di, esegui command3 (;)

Un altro esempio:

{ command1 && command2; }; { command3 && command4; }

In questo esempio:

  • correre command1 e aspetta che finisca
  • Se command1 ha esito positivo, esegui command2 e attendi che finisca (&&)
  • a prescindere se command2 ha avuto successo o no, o se ha funzionato o no, corri command3 e aspetta che finisca (il ; dopo il primo })
  • Se command3 ha successo, corri command4 (&&)

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


Ti e piaciuto questo articolo?
Supporta il mio lavoro, facendo una donazione!

Click to comment

Leave a Reply

Esegui l'accesso per Commentare.

Di tendenza

Close Popup
Questo sito utilizza i cookie per migliorare servizi ed esperienza dei lettori. Se decidi di continuare la navigazione senza blocchi premi su Accetto, oppure continua tranquillamente la navigazione, nessun dato sulla tua navigazione verrà raccolto.
Close Popup
Privacy Settings saved!
Impostazioni

Quando visiti un sito Web, esso può archiviare o recuperare informazioni sul tuo browser, principalmente sotto forma di cookies. Controlla qui i tuoi servizi di cookie personali.

Questi cookie sono necessari per il funzionamento del sito Web e non possono essere disattivati nei nostri sistemi.

Cookie tecnici
Per utilizzare questo sito web usiamo i seguenti cookie tecnici necessari:
  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec
  • swpm_session

Google Adsense
Usiamo la pubblicità di Google solo per mantenere attivi i nostro sito. Con ip anonimizzati.

Rifiuta tutti i Servizi
Save
Accetta tutti i Servizi