linux - 优化 xargs 参数枚举

标签 linux bash xargs

xargs 参数枚举的这种用法可以更好地优化吗? 目的是在实际命令中间注入(inject)单个参数。

我愿意:

echo {1..3} | xargs -I{} sh -c 'for i in {};do echo line $i here;done'

echo {1..3} | for i in $(xargs -n1);do echo line $i here; done

我得到:

line 1 here
line 2 here
line 3 here

这就是我需要的,但我想知道是否可以避免循环和临时变量?

最佳答案

您需要用换行符分隔 xargs 的输入:

echo {1..3}$'\n' | xargs -I% echo line % here

对于数组扩展,您可以使用printf:

ar=({1..3})
printf '%s\n' "${ar[@]}" | xargs -I% echo line % here

(如果只是为了输出,您可以在没有 xargs 的情况下使用它:

printf 'line %s here\n' "${ar[@]}"

)

关于linux - 优化 xargs 参数枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41791764/

相关文章:

linux - android linux内核中的虚拟地址到物理地址和反向

python - 按每行的前两个字符拆分大型平面文件

linux - 对文件每一行的制表符分隔数字进行排序

shell - 将文件的每一行通过管道传递给命令

linux - 我如何在 Go 中列出 block 设备?

linux - 无法从安装的磁盘执行 .sh 脚本 (Ubuntu 18.04) : zsh: permission denied

php - Asterisk 执行失败 '/usr/share/asterisk/agi-bin/call_handle.php' : Permission denied

sed 中的正则表达式替换给定特定格式的 url 的一部分

linux - 如何使用 find 复制和删除保持相同子目录结构的扩展

docker - 使用 docker exec 和 xargs 命令运行 `bash`