Viele Antworten hier empfehlen $@
oder $*
mit und ohne Anführungszeichen, jedoch scheint keine zu erklären, was diese wirklich tun und warum du es auf diese Weise machen solltest. Lass mich also diese ausgezeichnete Zusammenfassung von dieser Antwort "stehlen":
+--------+---------------------------+
| Syntax | Effektives Ergebnis |
+--------+---------------------------+
| $* | $1 $2 $3 ... ${N} |
+--------+---------------------------+
| $@ | $1 $2 $3 ... ${N} |
+--------+---------------------------+
| "$*" | "$1c$2c$3...c${N}" |
+--------+---------------------------+
| "$@" | "$1" "$2" "$3" ... "${N}" |
+--------+---------------------------+
Beachte, dass Anführungszeichen den entscheidenden Unterschied ausmachen und ohne sie beide identisches Verhalten haben.
Für meinen Zweck musste ich Parameter von einem Skript auf ein anderes übergeben und dafür ist die beste Option:
# Datei: parent.sh
# wir haben einige Parameter, die an parent.sh übergeben werden
# die wir gerne an child.sh unverändert weitergeben möchten
./child.sh $*
Beachte, keine Anführungszeichen und $@
sollte auch in der obigen Situation funktionieren.
1 Stimmen
Verwandte: Wie kann ich alle Argumente, die an mein Bash-Skript übergeben wurden, an eine meiner Funktionen übergeben?
0 Stimmen
Siehe auch stackoverflow.com/questions/12314451/…
0 Stimmen
Ich musste diese Lösung für meinen Anwendungsfall verwenden.