将参数传递给xargs调用的用户定义函数

时间:2012-07-27 01:23:36

标签: bash

我有一个数组“foo”。我想将数组传递给自定义函数“bar”,它是xargs命令的一部分。我花了一些时间来弄清楚如何在xargs中调用用户定义的函数。为此,我导出函数“bar”并使用“bash -c”来执行它。但是$ foo无法传递给bar()。 bar()中的$ 1是空的。

有谁知道如何解决这个问题?

谢谢!

foo="1 2 3 4 5 6 7 8 9"

bar(){
   echo $1
   echo "asdf"
   sleep 2
}

export -f bar

echo $foo | xargs -n 1 -P 3 bash -c bar

1 个答案:

答案 0 :(得分:1)

我希望通过bash -c启动到而不是的新shell可以访问您的功能。我希望它仅适用于以()$()``开头的子广告。

如果您希望新启动的shell具有该功能,可能将该函数存储在一个文件中并使用--rcfile foo直接加载该函数?或者,将其重写为脚本文件? (由于bash -c的每次执行都是新的fork()/exec()对,因此也可以直接运行您的脚本。)