Supponiamo che io abbia uno script che riceve un percorso come parametro. Come potrei eseguire tutti gli script che si trovano in quel percorso?
Supponiamo che io abbia uno script che riceve un percorso come parametro. Come potrei eseguire tutti gli script che si trovano in quel percorso?
Risposte:
Supponendo per percorso intendevi il percorso di una directory, usa run-parts
. Da man run-parts
:
run-parts - run scripts or programs in a directory
All'inizio è necessario impostare l'autorizzazione di esecuzione su tutti gli script che si desidera eseguire. Normalmente run-parts
ignorerà le directory e anche i file che non sono eseguibili risiedono in quella directory.
Anche se prima di eseguire è necessario verificare quali file verranno eseguiti --test
dall'opzione:
run-parts --test /path/to/directory
Devo dire che run-parts
ha una rigorosa convenzione di denominazione per gli script da eseguire:
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.
Controlla man run-parts
per avere più idee.
run-parts /home/you/Dropbox/scripts_to_run
.. stai attento alla denominazione però ..
Le parti di esecuzione funzioneranno se gli script hanno i nomi corretti. Se non vuoi occuparti di rinominare i tuoi script per adattarli al run-parts
complesso schema di denominazione, potresti fare qualcosa di semplice come
for file in ~/target/*; do $file 2>/dev/null; done
Ciò tenterà di eseguire tutti i file (e le directory) presenti in ~/target
. I 2>/dev/null
messaggi di errore redirect in modo che non si lamentano quando si tenta di eseguire directory o file non eseguibili.
In alternativa, puoi provare il più sofisticato
for file in ~/target/*; do
[ -f "$file" ] && [ -x "$file" ] && "$file"
done
Questo verificherà se ciascuno dei risultati è un file ( [ -f $file ]
), è eseguibile ( [ -x $file ]
) e solo se entrambi i test hanno esito positivo tenterà di eseguire il file.