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-partsignorerà 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 --testdall'opzione:
run-parts --test /path/to/directory
Devo dire che run-partsha 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-partsper 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-partscomplesso 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/nullmessaggi 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.