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

Linux bash:Mehrfache Variablenzuweisung

Manchmal muss man etwas verrücktes tun. Angenommen, Sie möchten aus einem Befehl lesen (z. B. das Datumsbeispiel von SDGuero), aber Sie möchten mehrere Gabeln vermeiden.

read month day year << DATE_COMMAND
 $(date "+%m %d %Y")
DATE_COMMAND
echo $month $day $year

Sie könnten auch in den read-Befehl leiten, aber dann müssten Sie die Variablen innerhalb einer Subshell verwenden:

day=n/a; month=n/a; year=n/a
date "+%d %m %Y" | { read day month year ; echo $day $month $year; }
echo $day $month $year

ergibt ...

13 08 2013
n/a n/a n/a

Das erste, was mir in den Sinn kommt:

read -r a b c <<<$(echo 1 2 3) ; echo "$a|$b|$c"

Ausgabe ist wenig überraschend

1|2|3

Ich wollte die Werte einem Array zuweisen. Als Erweiterung von Michael Krelins Ansatz habe ich also Folgendes getan:

read a[{1..3}] <<< $(echo 2 4 6); echo "${a[1]}|${a[2]}|${a[3]}"

was ergibt:

2|4|6 

wie erwartet.


Ich denke, das könnte helfen...

Um vom Benutzer eingegebene Daten (MM/TT/JJJJ) in meinen Skripten aufzuschlüsseln, speichere ich Tag, Monat und Jahr in einem Array und lege die Werte dann wie folgt in separate Variablen:

DATE_ARRAY=(`echo $2 | sed -e 's/\// /g'`)
MONTH=(`echo ${DATE_ARRAY[0]}`)
DAY=(`echo ${DATE_ARRAY[1]}`)
YEAR=(`echo ${DATE_ARRAY[2]}`)

Linux
  1. Bash-Scripting(I)

  2. Automatische Umwandlung von Zeilenumbrüchen in der Shell-Variablenzuweisung?

  3. Liest Werte aus einer Pipe in eine Shell-Variable ein

  4. Ausblenden von Benutzereingaben auf dem Terminal im Linux-Skript

  5. Überprüfen Sie, ob eine Variable in einer Liste in Bash vorhanden ist

Bash-Exportvariable

16 Beispiele für Echo-Befehle unter Linux

Bash las Befehl

Bash Echo-Befehl mit Beispielen in Linux erklärt

So verwenden Sie den Echo-Befehl in Bash-Skripten unter Linux

Linux-Bash-Skript, einzelner Befehl, aber mehrere Zeilen?