Параллельный: как ссылаться на несколько аргументов из функции

У меня есть эта функция, и мне нужно, чтобы она ссылалась на несколько аргументов функции, использующей параллельный GNU.

foo () {

    cd ${HOME}/sh/xxx/xxx/xxx/folder_with_scripts
    bash -H $1 #replace with echo in test run {echo $1 is being echoed}
    bash -H $2 #replace with echo in test run {echo $2 is being echoed}
}

export -f foo
parallel foo ::: *script.sh bash*.sh

folder_with_scripts содержимое

$ ls
firstscript.sh
secondscript.sh
thirdscript.sh
bashhim.sh
bashscript.sh
bashher.sh

parallel foo в основном выполняет все сценарии, следующие за *script.sh внутри, ссылаясь на него как на аргумент внутри foo. Это $1. Я пытаюсь сделать так, чтобы он также выполнял bash*.sh*, которые находятся в каталоге folders_with_scripts, с помощью $2.

Согласно man parallel, синтаксис следующий:

 parallel [options] [command [arguments]] ( ::: arguments | :::: argfile(s) )

Поскольку ::: arguments имеет множественное число, я предполагаю, что это вполне возможно.

результат

Для удобства заменяю bash на echo

$ ./foo.sh
firstscript.sh is being echoed
secondscript.sh is being echoed
thirdscript.sh is being echoed
              is being echoed
              is being echoed
              is being echoed

желаемый результат

firstscript.sh is being echoed
secondscript.sh is being echoed
thirdscript.sh is being echoed
bashhim.sh is being echoed
bashscript.sh is being echoed
bashher.sh is being echoed

В моем случае parallel foo ::: *.sh не подойдет.

Замена позиций $1 на *script.sh не поможет.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
666
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш вопрос не содержит MVCE https://stackoverflow.com/help/mcve В частности, я не могу запустить ваш код непосредственно в моей системе. Итак, этот ответ основан на моем лучшем предположении о том, что, я думаю, вы пытаетесь сделать.

Предполагая, что вы хотите запустить все bash*.sh для каждого *script.sh:

parallel foo ::: *script.sh ::: bash*.sh

Если каждый bash*.sh связан с *script.sh (:::+ представлен в версии 20160422):

parallel foo ::: *script.sh :::+ bash*.sh

Протестируйте с --dry-run:

parallel --dry-run foo ::: *script.sh ::: bash*.sh
parallel --dry-run foo ::: *script.sh :::+ bash*.sh

Если это не ответ на ваш вопрос, обновите вопрос, указав, какие команды вы хотите запустить GNU Parallel, например:

foo firstscript.sh bashhim.sh
foo secondscript.sh thirdscript.sh
foo bashscript.sh bashher.sh

и покажите вывод echo *script.sh bash*.sh в каталоге, в котором вы запускаете parallel.

Данные, лежащие в основе :::, называются источником ввода. Работа с источниками входного сигнала описана в главе 4 документа https://zenodo.org/record/1146014 (напечатано: http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html).

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