Vous pouvez séparer plusieurs commandes par ;
, ils sont donc exécutés séquentiellement, par exemple :
really_long_script.sh ; echo Finished
Si vous souhaitez exécuter le programme suivant uniquement si le script s'est terminé avec le code de retour 0 (ce qui signifie généralement qu'il s'est exécuté correctement), alors :
really_long_script.sh && echo OK
Si vous voulez le contraire (c'est-à-dire continuer uniquement si la commande actuelle a échoué), alors :
really_long_script.sh || echo FAILED
Vous pouvez exécuter votre script en arrière-plan (mais attention, la sortie des scripts (stdout
et stderr
) continuerait à aller sur votre terminal à moins que vous ne le redirigiez quelque part), puis wait
pour cela :
really_long_script.sh &
dosomethingelse
wait; echo Finished
Si vous avez déjà exécuté le script, vous pouvez le suspendre avec Ctrl-Z
, puis exécutez quelque chose comme :
fg ; echo Finished
Où fg
amène le processus suspendu au premier plan (bg
le ferait fonctionner en arrière-plan, à peu près comme commencé avec &
)
Vous pouvez également utiliser le contrôle des tâches de bash. Si vous avez commencé
$ really_long_script.sh
puis appuyez sur ctrl+z pour le suspendre :
^Z
[1]+ Stopped really_long_script.sh
$ bg
pour redémarrer le travail en arrière-plan (comme si vous l'aviez démarré avec really_long_script.sh &
). Ensuite, vous pouvez attendre ce travail en arrière-plan avec
$ wait N && echo "Successfully completed"
où N est l'ID de la tâche (probablement 1 si vous n'avez exécuté aucune autre tâche en arrière-plan) qui s'affiche également sous la forme [1]
ci-dessus.
Si le processus ne s'exécute pas sur le tty actuel, essayez ceci :
watch -g ps -opid -p <pid>; mycommand