Решение использовать --null
переключатель ГНУ параллельных (или его псевдоним -0
), который говорит, что использовать разделитель NULL вместо новой строки. Таким образом, массивы с элементами, содержащими новые строки, могут быть переданы в GNU Parallel, например. как это:
parallel --gnu --null "command_to_be_executed" "{}" ::: "${array[@]}"
Если вы хотите, чтобы команда, чтобы получить его порядковый номер, предшествуют "{}"
с {#}
.
Если вы пытаетесь использовать эту команду, чтобы обработать несколько файлов, чьи имена (или пути, ведущие к ним) могут содержать новые линии, вот пример того, как array
может быть построена (новая линия сейф):
while IFS= read -r -d $'\0' file; do
files+=("$file")
done < <(`find "/path/to/files/" -maxdepth 1 -name "*.csv" -print0"`)
Ну, на самом деле мало комментировать. Команда 'parallel' должна запускать сценарий таким образом: ' ./script_name "имя файла с новыми строками", где имя файла является одним из элементов переменной 'files' оболочки (Bash). –