GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ich möchte alle Befehlszeilenargumente für ein Bash-Skript in einer einzigen Variablen speichern

echo "$*"

würde tun, was Sie wollen, nämlich die gesamten Befehlszeilenargumente ausgeben, getrennt durch ein Leerzeichen (oder, technisch gesehen, was auch immer der Wert von $IFS ist ist). Wenn Sie es in einer Variablen speichern wollten, könnten Sie das tun

thevar="$*"

Wenn das Ihre Frage nicht gut genug beantwortet, bin ich mir nicht sicher, was ich noch sagen soll...


Wenn Sie vermeiden möchten, dass $IFS involviert ist, verwenden Sie [email protected] (oder schließen Sie $* nicht in Anführungszeichen ein)

$ cat atsplat
IFS="_"
echo "     at: [email protected]"
echo "  splat: $*"
echo "noquote: "$*

$ ./atsplat this is a test
     at: this is a test
  splat: this_is_a_test
noquote: this is a test

Das IFS-Verhalten folgt auch Variablenzuweisungen.

$ cat atsplat2
IFS="_"
[email protected]
splatvar=$*
echo "     at: $atvar"
echo "  splat: $splatvar"
echo "noquote: "$splatvar

$ ./atsplat2 this is a test
     at: this is a test
  splat: this_is_a_test
noquote: this is a test

Beachten Sie, dass, wenn die Zuweisung zu $IFS nach der Zuweisung von $splatvar erfolgen würde, alle Ausgaben gleich wären ($IFS hätte im Beispiel "atsplat2" keine Wirkung).


Linux
  1. Wie teste ich, ob eine Variable in Bash eine Zahl ist?

  2. Linux bash:Mehrfache Variablenzuweisung

  3. Zeile für Zeile im Bash-Skript lesen

  4. Wie speichert man einen Befehl in einer Variablen in einem Shell-Skript?

  5. Simulieren des ENTER-Tastendrucks im Bash-Skript

So speichern Sie einen Linux-Befehl als Variable im Shell-Skript

Bash-Anfängerserie Nr. 3:Übergabe von Argumenten an Bash-Skripte

Skriptparameter in Bash

Variablenbereich für Bash-Shell-Skripte und Funktionen im Skript

Wie kann ich mein Bash-Skript auf älteren Bash-Versionen testen?

Wie teilt man eine Zeichenfolge mit Anführungszeichen (wie Befehlsargumente) in Bash auf?