Comandi consecutivi


14

È corretto supporre che quando ;unisce due comandi su una linea, Bash attende sempre che il primo comando sia terminato prima di eseguire il secondo comando? E allo stesso modo, in uno script di shell contenente due comandi diversi su righe diverse, Bash attende sempre che il comando sulla prima riga sia terminato prima di eseguire il comando sulla seconda riga?

In tal caso, esiste un modo per eseguire due comandi in una riga o in uno script, in modo che il secondo comando non aspetti fino al termine del primo comando?

Inoltre, le diverse linee in uno script di shell equivalgono a linee separate unite da ;o &&?


Risposte:


26

Hai ragione, i comandi negli script vengono eseguiti in sequenza per impostazione predefinita.

È possibile eseguire un comando in background suffisso con &(una singola e commerciale).

I comandi su righe separate sono equivalenti ai comandi uniti ;per impostazione predefinita. Se si dice alla shell di interrompere i codici di uscita diversi da zero ( set -e), lo script verrà eseguito come se tutti i comandi fossero stati uniti &&.


2

Per rispondere alla tua seconda domanda, puoi usare &per lanciare un comando in background e continuare con lo script senza aspettare che finisca.

commandA & commandB

Se lo esegui in un terminale interattivo (anziché in uno script), puoi utilizzare fgper riportare in primo piano il comando in background o jobsper visualizzare un elenco di attività in background.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.