Using this post as a starting point I am running the following in bash:
seq 1 5 | xargs -d $'\n' 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.
You have to pass some dummy value at position 0 to sh
script like this:
seq 1 5 | xargs -d $'\n' 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.