Xargs
用 xargs 修復了最後一個參數
是否可以使用 xargs 呼叫命令以固定命令的最後一個參數?
我的嘗試:
printf '%s\n' a b c d | xargs -I{} echo {} LAST
最終做
echo a LAST echo b LAST echo c LAST echo d LAST
我想讓 xargs 呼叫
echo a b c d LAST #fit as many as you can but always finish wiht LAST
這可能嗎,最好以便攜的方式?
tl;博士; 這就是你可以便攜地做到這一點的方法,沒有
-I
其他破碎的花哨選項:$ echo a b c d f g | xargs -n 2 sh -c 'echo "$@" LAST' sh a b LAST c d LAST f g LAST $ seq 1 100000 | xargs sh -c 'echo "$#" LAST' sh 23692 LAST 21841 LAST 21841 LAST 21841 LAST 10785 LAST
該
-I
選項的問題在於它被設計破壞了,並且沒有辦法解決它:$ echo a b c d f g | xargs -I {} -n 1 echo {} LAST a b c d f g LAST $ echo a b c d f g | xargs -I {} -n 2 echo {} LAST {} LAST a b {} LAST c d {} LAST f g
但它們可能已被涵蓋,因為這就是標準所說的:
-I replstr ^
$$ XSI $$ $$ Option Start $$插入模式:對標準輸入中的每一行執行實用程序,將整行作為單個參數,將其插入到每次出現 replstr 的參數中。
它並沒有說明與
-n
和-d
選項的互動,所以他們可以自由地做任何他們想做的事情。這就是它在(較舊的)FreeBSD 上的情況,不太出人意料但非標準:
fzu$ echo a b c d f g | xargs -I {} -n 2 echo {} LAST a b LAST c d LAST f g LAST fzu$ echo a b c d f g | xargs -I {} -n 1 echo {} LAST a LAST b LAST c LAST d LAST f LAST g LAST