我有一个数组“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
答案 0 :(得分:1)
我希望通过bash -c
启动到而不是的新shell可以访问您的功能。我希望它仅适用于以()
或$()
或``
开头的子广告。
如果您希望新启动的shell具有该功能,可能将该函数存储在一个文件中并使用--rcfile foo
直接加载该函数?或者,将其重写为脚本文件? (由于bash -c
的每次执行都是新的fork()/exec()
对,因此也可以直接运行您的脚本。)