Предположим, у меня есть скрипт, который получает путь в качестве параметра. Как я могу выполнить все сценарии, расположенные по этому пути?
13
Предполагая, что под путем вы подразумевали путь к каталогу, используйте run-parts
. От man run-parts
:
run-parts - run scripts or programs in a directory
Сначала вам нужно установить разрешение на выполнение всех скриптов, которые вы хотите запустить. Обычно run-parts
игнорирует каталоги, а также файлы, которые не являются исполняемыми, находятся в этом каталоге.
Хотя перед запуском вы должны проверить, какие файлы будут запускаться с помощью --test
опции:
run-parts --test /path/to/directory
Я должен упомянуть, что run-parts
есть строгое соглашение об именах для скриптов, которые будут выполнены:
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.
Проверьте, man run-parts
чтобы получить больше идей.
run-parts /home/you/Dropbox/scripts_to_run
хотя будьте осторожны с именами ..Запущенные части будут работать, если ваши скрипты имеют правильные имена. Если вы не хотите иметь дело с переименованием ваших скриптов в соответствии
run-parts
со сложной схемой именования, вы можете сделать что-то простое, например:Это попытается выполнить все файлы (и каталоги), найденные в
~/target
. Эти2>/dev/null
сообщения об ошибках переадресовывает , поэтому он не будет жаловаться при попытке запуска каталогов или не являющихся исполняемые файлы.Кроме того, вы можете попробовать более сложные
Это проверит, является ли каждый из результатов file (
[ -f $file ]
), выполнимым ([ -x $file ]
) и только если оба эти теста пройдут успешно, он попытается выполнить файл.источник