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

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

например:

14 43 57 

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

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

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, чтобы указать, сколько процессов будет выполняться параллельно.

  • Повторно заменять строку
  • Удаление определенных слов из имени файла
  • Отключить кэш исполняемого файла bash в пути
  • Как получить нулевое число с использованием расширения скобок? {1..30} с 01 02 03 и т. Д.
  • Настройка Bash - Как оставить пробелы перед выводом команды?
  • Привязать ключ к сценарию bash
  • Как управлять циклом?
  • Скопируйте все папки в новое место, кроме тех, которые содержат недопустимые символы.
  • Force bash, чтобы уважать новые строки в командном выходе
  • Почему параметры Bash `command` и` type` являются необязательными?
  • Различные результаты, вызывающие bash напрямую или через soft link
  • dirname недействительный параметр `b`
  • Linux и Unix - лучшая ОС в мире.