Ich versuchte, die xargs
zu verwenden, um die Argumente an die echo
weitergeben müssen:wie „ein“ Argument übergeben und es zweimal in „xargs“ Befehl
[[email protected] scripts]$ echo {0..4} | xargs -n 1 echo
0
1
2
3
4
die versicherten -n 1
dass der xargs
Pass 1
Argumente ein Zeit zum echo
.
Dann möchte ich dieses aruments zweimal verwenden, aber die Ergebnisse nicht ich wollte:
[[email protected] scripts]$ echo {0..4} | xargs [email protected] -n 1 echo @,@
0 1 2 3 4,0 1 2 3 4
die -n 1
deaktiviert scheint, wenn ich die [email protected]
hinzugefügt, und das ist das Ergebnis, das ich wollte:
0,0
1,1
2,2
3,3
4,4
Wie kann ich das erreichen?
-------- Versorgung ------------------ Ich habe die von @ 123 empfohlene Methode verwendet, es gibt jedoch noch eine andere Frage:
test.sh:
#!/bin/bash
a[0]=1
a[1]=2
echo "a[0] and a[1] : "${a[0]}, ${a[1]}
echo -n {0..1} | xargs -I num -d" " echo num,${a[num]},num
und dies ist die Ausgabe:
[[email protected] scripts]$ sh test.sh
a[0] and a[1] : 1, 2
0,1,0
1,1,1
Sie können sehen, dass das Array a
nicht den Wert zurück ich wollte: < Und wie kann ich dieses Problem beheben?
'echo -n {0..4} | xargs -I @ -d '' echo @, @ '? 'printf"% s \ n "{0..4} | xargs -I @ echo @, @ '? – 123
Könntest du dir diese Frage mal anschauen? Es gibt noch einige Fragen bei der Verwendung der Argumente: (@ 123 –
Shell-Erweiterung tritt auf, bevor Xargs es jemals sehen, so wird es immer als '$ {a [num]}' aka '$ {a [0]}' etwas albernes wie 'xargs -I num -d" "bash -c 'echo $ num'" $ {a [@]} "aber es gibt wahrscheinlich einen besseren Weg, um zu erreichen, was auch immer dein Endziel ist. – 123