Как передать переменную в параллельный скрипт из текстового файла по строкам

Мне нужно прочитать файл строки за строкой и передать строку как переменную для параллельного запуска скрипта.

например:

14 43 57 

находится в файле foo.txt

если я var = $ (cat foo.txt), то я могу использовать этот переменный $ var внутри скрипта, но как вызвать параллель, чтобы изменить эту переменную для каждого экземпляра, запускающего скрипт?

  • Что такое & >> в сценарии оболочки
  • понять порядок операций для расширения параметра bash
  • Создать узел, который содержит обновленное значение по времени
  • Проблема с поиском и переменными
  • Как написать небольшой журнал с bash?
  • bash: / usr / bin / perl: слишком длинный список аргументов
  • Решено - как избежать «bash: q: command not found» каждый раз, когда я 'su'?
  • Почему эти два варианта команд, которые похожи, дают разные результаты?
  • 2 Solutions collect form web for “Как передать переменную в параллельный скрипт из текстового файла по строкам”

    вы можете использовать xargs .

    например: input – input.txt

     1 2 3 4 

    Команда запуска команды command.sh

     #/bin/bash echo $1: start date sleep 2s echo $1 : stop date 

    Совместная работа параллельно:

     ➜ /tmp cat input.txt| xargs -n 1 -P 4 ./command.sh 1: start 3: start 2: start 4: start Tue May 19 19:03:30 IDT 2015 Tue May 19 19:03:30 IDT 2015 Tue May 19 19:03:30 IDT 2015 Tue May 19 19:03:30 IDT 2015 1 : stop 4 : stop 3 : stop 2 : stop Tue May 19 19:03:32 IDT 2015 Tue May 19 19:03:32 IDT 2015 Tue May 19 19:03:32 IDT 2015 Tue May 19 19:03:32 IDT 2015 

    Вы также можете использовать GNU Parallel с флагом -a, который читается из файла.

     parallel -a foo.txt echo 14 43 57 

    Это не самый элегантный пример, но он просто запускает ту же самую команду против всех аргументов (строка за строкой) в текстовом файле. Включите флаг -j, чтобы указать, сколько процессов будет выполняться параллельно.

    Linux и Unix - лучшая ОС в мире.