Как выполнить все сценарии в пути?

Предположим, у меня есть скрипт, который получает путь в качестве параметра. Как я могу выполнить все сценарии, расположенные по этому пути?

13
задан 11 May 2015 в 01:38

2 ответа

Принятие путем, Вы имели в виду путь к каталогу, используйте 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 для получения большей идеи.

14
ответ дан 11 May 2015 в 11:38
  • 1
    Спасибо, но я нисколько не обращаюсь за помощью с Perl. Я обращаюсь за помощью с SDK Ubuntu. – Will Braswell 27 February 2019 в 17:42

Части выполнения будут работать, если Ваши сценарии будут иметь корректные имена. Если Вы не хотите иметь дело с переименованием Ваших сценариев для установки 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 ]) и только если оба тех теста успешны, будет он пытаться выполнить файл.

9
ответ дан 11 May 2015 в 11:38
  • 1
    это работает.... к Вашему объяснению, уверенному, но я ssh луг мне:) – Zanna 10 August 2016 в 04:07

Другие вопросы по тегам:

Похожие вопросы: