Une variable var
contient plusieurs arguments, chacun divisé par une nouvelle ligne.
echo "$var" | xargs -I % echo ABC %
#Results in:
#ABC One
#ABC Two
#ABC Three
Cependant, en omettant -I
et le %
caractères, je reçois le texte suivant:
echo "$var" | xargs echo ABC
#Results in:
#ABC One Two Three
Une fois que j'ai lu, {} remplacerait l'argument actuel (comme le ferait find), mais cela ne se produit pas. Qu'est-ce que je fais mal?
Also, unquoted blanks do not terminate input items; instead the separator is the newline character.
- cela est essentiel pour comprendre le comportement. Sans pour autant-I
,xargs
ne voit l'entrée que sous la forme d'un seul champ, car newline n'est pas un séparateur de champ. Avec-I
, soudainement newline est un séparateur de champ, et doncxargs
voit trois champs (qu'il itère sur). C’est un vrai point subtil, mais est expliqué dans leman
citations de page.