Supposons que j'ai un script qui reçoit un chemin d'accès en tant que paramètre. Comment pourrais-je exécuter tous les scripts situés dans ce chemin?
Supposons que j'ai un script qui reçoit un chemin d'accès en tant que paramètre. Comment pourrais-je exécuter tous les scripts situés dans ce chemin?
Réponses:
En supposant par chemin que vous vouliez dire chemin vers un répertoire, utilisez run-parts
. De man run-parts
:
run-parts - run scripts or programs in a directory
Au début, vous devez définir l'autorisation d'exécution sur tous les scripts que vous souhaitez exécuter. Ignore normalement run-parts
les répertoires et les fichiers qui ne sont pas exécutables résident dans ce répertoire.
Bien qu'avant l'exécution, vous devez vérifier quels fichiers seront exécutés par l' --test
option:
run-parts --test /path/to/directory
Je dois mentionner qu'il run-parts
a une convention de dénomination stricte pour les scripts à exécuter:
If neither the --lsbsysinit option nor the --regex option is given
then the names must consist entirely of ASCII upper- and
lower-case letters, ASCII digits, ASCII underscores, and ASCII minus-hyphens.
Cochez man run-parts
pour avoir plus d'idée.
run-parts /home/you/Dropbox/scripts_to_run
.. faites attention au nommage cependant ..
Les run-parts fonctionneront si vos scripts ont les noms corrects. Si vous ne voulez pas vous occuper de renommer vos scripts en fonction run-parts
du schéma de nommage complexe de, vous pouvez faire quelque chose d'aussi simple que
for file in ~/target/*; do $file 2>/dev/null; done
Cela tentera d'exécuter tous les fichiers (et répertoires) trouvés dans ~/target
. Le 2>/dev/null
redirige les messages d'erreur afin de ne pas se plaindre lors de la tentative d'exécution de répertoires ou de fichiers non exécutables.
Alternativement, vous pouvez essayer le plus sophistiqué
for file in ~/target/*; do
[ -f "$file" ] && [ -x "$file" ] && "$file"
done
Cela vérifiera si chacun des résultats est un fichier ( [ -f $file ]
), est exécutable ( [ -x $file ]
) et seulement si ces deux tests réussissent, il tentera d'exécuter le fichier.