Xargs
我是否需要“| xargs -n 1”來解決 xargs 的 -I 副作用?
我驚訝地發現這一點:
$ echo 1 2 3 4 5 | xargs -n 1 echo 1 2 3 4 5 $ echo 1 2 3 4 5 | xargs -n 1 -I FOO echo FOO 1 2 3 4 5
也就是說,使用
-I
標誌有這個副作用:此外,未加引號的空格不會終止輸入項;相反,分隔符是換行符。
所以我看到的解決方法是:
$ echo 1 2 3 4 5 | xargs -n 1 | xargs -n 1 -I FOO echo FOO 1 2 3 4 5
有更好的解決方法嗎?
我的實際命令行如下所示:
echo 102DRIFT 103DRIFT 104DRIFT 105DRIFT | xargs -n 1 | xargs -n 1 -I _DIR_ python process.py /SDcard/DCIM/_DIR_/ MyTrace.gpx 10
(如果相關,Ubuntu Trusty。)
使用GNU xargs,您可以使用
-d
選項:$ echo 1 2 3 4 5 | xargs -n 1 -d" " -I FOO echo FOO 1 2 3 4 5
我認為你根本不需要
xargs
:for DCIM in /SDcard/DCIM/10[2-5]DRIFT/ do python process.py "$DCIM" MyTrace.gpx 10 done
不過,除此之外,您還可以做一些其他事情:
printf 10%dDRIFT\\n 2 3 4 5 | ...the rest...
或者,如果您在輸入中沒有任何引號……
IN | tr \ \\n | xargs ... the rest ...