Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.1k views
in Technique[技术] by (71.8m points)

linux - Using xargs to run multiple commands

Using this post as a starting point I am running the following in bash:

seq 1 5 | xargs -d $'
' sh -c 'for arg do echo $arg; done'

Expected output

1
2
3
4
5

Actual output

2
3
4
5

i.e. is missing the first of the intended arguments.

Am probably being a tool, but wondering why this is.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You have to pass some dummy value at position 0 to sh script like this:

seq 1 5 | xargs -d $'
' sh -c 'for arg do echo $arg; done' _
1
2
3
4
5

Without passing _ to sh script 1 is passed as $0 whereas for arg loops through positional arguments starting with position 1 only.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...