У меня есть эта функция, и мне нужно, чтобы она ссылалась на несколько аргументов из функции, используя параллельную 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 content
$ 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
не будетотрежь