bash – 如何传递“one”参数并在“xargs”命令中使用它两次
发布时间:2020-12-15 21:25:00 所属栏目:安全 来源:网络整理
导读:我试图使用xargs将参数传递给echo: [usr@linux scripts]$echo {0..4} | xargs -n 1 echo01234 -n 1确保xargs一次传递1个参数到回声. 然后我想两次使用这个武器,但结果不是我想要的: [usr@linux scripts]$echo {0..4} | xargs -I@ -n 1 echo @,@0 1 2 3 4,0
我试图使用xargs将参数传递给echo:
[usr@linux scripts]$echo {0..4} | xargs -n 1 echo 0 1 2 3 4 -n 1确保xargs一次传递1个参数到回声. 然后我想两次使用这个武器,但结果不是我想要的: [usr@linux scripts]$echo {0..4} | xargs -I@ -n 1 echo @,@ 0 1 2 3 4,0 1 2 3 4 当我添加-I @时,-n 1似乎被禁用了, 0,0 1,1 2,2 3,3 4,4 我怎么能实现这一目标? – – – – 供应 – – – – – – – – – test.sh: #!/bin/bash a[0]=1 a[1]=2 echo "a[0] and a[1] : "${a[0]},${a[1]} echo -n {0..1} | xargs -I num -d" " echo num,${a[num]},num 这是输出: [usr@linux scripts]$sh test.sh a[0] and a[1] : 1,2 0,1,1 你可以看到数组a没有返回我想要的值:< 解决方法
如果无法更改输入格式,可以将分隔符设置为空格:
$echo -n {0..4} | xargs -d " " -I@ echo @,@ 0,4 否则,更改输入以使用换行符分隔标记: $printf "%sn" {0..4} | xargs -I@ echo @,4 man xargs解释了这种语法的原因 -I replace-str Replace occurrences of replace-str in the initial-arguments with names read from standard input. Also,unquoted blanks do not terminate input items; instead the sep |