【发布时间】:2015-06-19 03:07:37
【问题描述】:
我正在尝试加快数据库的处理速度。我迁移到 xargs。但我被严重卡住了。如果 xargs 调用的命令不是内置的,则将参数列表传递给 xargs 不起作用。我不知道为什么。这是我的代码:
#!/bin/bash
list='foo
bar'
test(){
echo "$1"
}
echo "$list" | tr '\012' '\000' | xargs -0 -n1 -I '{}' 'test' {}
所以根本没有输出。并且测试功能永远不会被执行。但是,如果我将“xargs”命令中的“test”替换为“echo”或“printf”,它就可以正常工作。
【问题讨论】:
-
xargs 将可执行文件作为参数(包括自定义脚本)而不是环境中定义的函数。这可能有助于解释更大的问题。
-
谢谢。将我的命令放入脚本中解决了这个问题。
-
酷。我会正确回答,所以我们可以关闭这个问题:)
-
顺便说一句,不要误称自己的东西
test;它是一个内置的 shell(也称为[)。 -
顺便说一句,您的问题描述完全错误。
xargs不能使用内置命令,但它可以使用任何外部命令,例如ls或echo(这也是许多现代 shell 的内置命令,但仍可作为/bin/echo使用,以便,嗯, 这个工作)或printf.
标签: bash parameter-passing xargs