加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

我怎么能实现这一目标?

– – – – 供应 – – – – – – – – –
我使用了@ 123推荐的方法,但还有另外一个问题:

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                        

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读