Supongamos que tengo un script que recibe una ruta como parámetro. ¿Cómo podría ejecutar todos los scripts ubicados en esa ruta?
13
Suponiendo que por ruta se refería a la ruta a un directorio, use run-parts
. De man run-parts
:
run-parts - run scripts or programs in a directory
Al principio, debe establecer el permiso de ejecución en todos los scripts que desea ejecutar. Normalmente run-parts
ignorará los directorios y también los archivos que no son ejecutables residen en ese directorio.
Aunque antes de ejecutar debe verificar qué archivos se ejecutarán con la --test
opción:
run-parts --test /path/to/directory
Debo mencionar que run-parts
tiene una convención de nomenclatura estricta para que se ejecuten los scripts:
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.
Comprueba man run-parts
para tener más idea.
run-parts /home/you/Dropbox/scripts_to_run
tenga cuidado con la nomenclatura ...Run-parts funcionará si sus scripts tienen los nombres correctos. Si no desea tratar de cambiar el nombre de sus scripts para que se ajusten
run-parts
al complejo esquema de nombres, puede hacer algo tan simple comoEso intentará ejecutar todos los archivos (y directorios) encontrados en
~/target
. Los2>/dev/null
mensajes de error vuelve a dirigir por lo que no se quejan al intentar ejecutar directorios o archivos no ejecutables.Alternativamente, puedes probar el más sofisticado
Esto verificará si cada uno de los resultados es un archivo (
[ -f $file ]
), es ejecutable ([ -x $file ]
) y solo si ambas pruebas son exitosas, intentará ejecutar el archivo.fuente