J'ai plusieurs scripts bash, ou plutôt un script qui doit être exécuté plusieurs fois.
Ce script accepte plusieurs arguments de ligne de commande et fait quelque chose avec eux. J'ai besoin d'exécuter ce script plusieurs fois de suite, en transmettant différentes valeurs d'argument. Le problème est que ce script est très long et que son exécution prend beaucoup de temps.
Je veux exécuter ce script une fois, avec quelques arguments. Ensuite, je souhaite exécuter à nouveau ce script immédiatement, en transmettant différentes valeurs d'argument cette fois.
Je dois donner mes résultats finis à mon patron demain matin. Une solution consisterait simplement à exécuter le script une fois, puis à rester assis devant l'ordinateur toute la nuit, en attendant qu'il se termine, puis à réexécuter le script. Mais le manque de sommeil n'est pas une option pour moi.
Existe-t-il un moyen d'automatiser l'exécution de scripts avec des valeurs d'argument prédéterminées? À propos, il me faut non seulement voir le résultat final des scripts, mais également le script tel qu'il a été transmis à la ligne de commande avec les arguments appropriés.
Peut-être vaudrait-il mieux regarder cette image pour mieux comprendre ma question.
wait
(voirman bash
ouhelp wait
de bash), probablement pas nécessaire ici, mais il faudra attendre un processus / PID ou tous les enfants pour terminerRéponses:
Tu as besoin d'un
for
boucle:Peut-être voudrez-vous sauvegarder une copie de la sortie dans un fichier journal et l'afficher sur un écran:
Placez le code ci-dessus dans un fichier appelé, par exemple,
script.sh
. Ensuite, à l'invite de commande, exécutez:la source
#!/bin/bash
ligne lors de l'appel d'un script avecbash script
?bash script
(oùscript
est le nom complet du fichier, y compris toute extension), le#!/bin/bash
la ligne est facultative.Le moyen le plus simple d’exécuter une commande après l’autre est d’utiliser simplement; Comme:
Si vous souhaitez ignorer les commandes en cours si la précédente échoue, vous pouvez le faire avec & amp; & amp ;:
Contrairement à pipe (|) ou à esperluette (& amp;), le point-virgule attend la fin de la commande avant l'exécution de la commande suivante.
la source
Vérifier le spouleur de tâches ( http://vicerveza.homeunix.net/~viric/soft/ts/ ) - il existe des paquets pour Debian.
Fondamentalement, vous pouvez l’installer, puis exécuter un tas de
tsc {script} {arguments}
et il va empiler la commande dans une file d'attente sur laquelle le spouleur travaille en arrière-plan.la source