TIL: Call bash function via xargs
:til: :cli: :bash:
To run cli tools there is xargs
. But what if I want to run certain part of
bash script (a function) in parallel? One option is to extract function to a
separate file and feed it into xargs
. Another way - make xargs
to execute
the function:
#!/bin/bash
p() {
echo "> $1"
}
main() {
export -f p
seq 10 | xargs -n 1 -I {} bash -c "p {}"
}
main "@$"
Necesary line here is to export the function via export -f <function_name>
.
Once function is exported to the scope, xargs
can access it and execute call
to the function. The p {}
part means value from seq
command is provided to
function p
. E.g. p 10
.