小编Sgt*_*kes的帖子

xargs只使用内置函数

我正在努力加快数据库的处理速度.我迁移到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 xargs parameter-passing

3
推荐指数
3
解决办法
3430
查看次数

了解Bash短路

首先,我不是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)

我知道,很容易遗漏内置的冒号,但它是一种解决方法的正确方法吗?

linux bash short-circuiting

0
推荐指数
1
解决办法
1844
查看次数

标签 统计

bash ×2

linux ×1

parameter-passing ×1

short-circuiting ×1

xargs ×1