GNU/Linux >> Znalost Linux >  >> Linux

Linux bash:Přiřazení více proměnných

Občas musíte udělat něco funky. Řekněme, že chcete číst z příkazu (příklad data od SDGuero), ale chcete se vyhnout vícenásobnému rozvětvení.

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

Můžete také zadat příkaz read, ale pak byste museli použít proměnné v podshellu:

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

výsledkem je...

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

První věc, která mě napadne:

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

výstup je nepřekvapivě

1|2|3

Chtěl jsem přiřadit hodnoty do pole. Takže jsem rozšířil přístup Michaela Krelina:

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

což dává:

2|4|6 

podle očekávání.


Myslím, že by to mohlo pomoci...

Abych v mých skriptech rozdělil data zadaná uživatelem (mm/dd/rrrr), uložil jsem den, měsíc a rok do pole a poté vložil hodnoty do samostatných proměnných následovně:

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 skriptování (I)

  2. Jednoduchá závorka v přiřazení proměnné Bash?

  3. Automatická transformace nových řádků v Shell proměnné přiřazení?

  1. Jak otestuji, zda je proměnná číslo v Bash?

  2. Čtěte řádek po řádku v bash skriptu

  3. Jak odstranit více souborů najednou v Bash na Linuxu?

  1. Jak mohu spočítat počet znaků v proměnné Bash

  2. Výstupní kód přiřazení proměnné k substituci příkazu v Bash

  3. BASH:najít duplicitní soubory (kompatibilní s MAC/LINUX)