Предположим, у меня есть скрипт, который получает путь в качестве параметра. Как я могу выполнить все сценарии, расположенные по этому пути?
Принятие путем, Вы имели в виду путь к каталогу, используйте 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
сложная схема именования, Вы могли сделать что-то столь же простое как
for file in ~/target/*; do $file 2>/dev/null; done
, Который попытается выполнить все файлы (и каталоги) найденный в ~/target
. 2>/dev/null
сообщения об ошибках перенаправлений, таким образом, это не будет жаловаться при попытке запустить каталоги или не исполняемые файлы.
, С другой стороны, можно попробовать более сложное
for file in ~/target/*; do
[ -f "$file" ] && [ -x "$file" ] && "$file"
done
, Это проверит, является ли каждым из результатов файл ([ -f $file ]
), исполняем ([ -x $file ]
) и только если оба тех теста успешны, будет он пытаться выполнить файл.