У меня есть несколько файлов в папке, и я хочу запустить их одной командой. Структура выглядит так:

keddad@keddad-HP:/media/$ ls
somfile.sh
otherfile.sh
onemorefile.sh

Поэтому я пытаюсь сделать это с помощью команды:

./*

Но он запускает только первый файл, игнорируя другие в папке. Как я могу запустить их все за один раз (или заставить их работать по очереди, чтобы второе запускалось после завершения первого)?

1 ответ1

2

Когда вы попробовали ./*, оболочка увидела одну команду:

./somfile.sh ./otherfile.sh ./onemorefile.sh

Или, другими словами, он видел одну команду (./somefile.sh) с двумя аргументами (./otherfile.sh ./onemorefile.sh).

Чтобы запустить их один за другим (последовательно):

for each in ./* ; do "${each}" ; done

Чтобы запустить их все одновременно (одновременно / параллельно):

for each in ./* ; do "${each}" & done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .