我正在努力加快数据库的处理速度.我迁移到xargs.但是我被严重困住了.如果xargs调用的命令不是内置的,则管道xargs的参数列表不起作用.我无法弄清楚原因.这是我的代码:
#!/bin/bash
list='foo
bar'
test(){
echo "$1"
}
echo "$list" | tr '\012' '\000' | xargs -0 -n1 -I '{}' 'test' {}
Run Code Online (Sandbox Code Playgroud)
所以根本没有输出.并且测试功能永远不会被执行.但是,如果我用"echo"或"printf"替换"xargs"命令中的"test",它可以正常工作.
首先,我不是Bash职业选手.我发现了几个月前,如果我同时使用&&,并||在大括号序列短路运营商,然后在情况下,第一个语句与真实值退出,如果在真正的块中的最后一条语句退出非零,那么失败块也将被执行.像这样:
returnNumber 0 && {
echo 'OK'
returnNumber 1
} || {
echo 'NG'
}
Run Code Online (Sandbox Code Playgroud)
将输出:
OK
NG
Run Code Online (Sandbox Code Playgroud)
所以,我为此寻找了最简单的解决方案,并想出了这个:
returnNumber 0 && {
echo 'OK'
returnNumber 1
:
} || {
echo 'NG'
}
Run Code Online (Sandbox Code Playgroud)
我知道,很容易遗漏内置的冒号,但它是一种解决方法的正确方法吗?