Bash provádí dělení slov v řetězcích zcela sám – ve skutečnosti častěji než ne, vyhnout se tomu je problém a důvod citování je tak důležitý. Ve vašem případě je snadné to využít:stačí vložit řetězec do pole bez uvozovek – bash použije dělení slov k oddělení jednotlivých prvků. Za předpokladu, že váš řetězec je uložen v proměnné $str
,
ar=($str) # no quotes!
vrátí pole 5 prvků. Váš index pole je index vašeho slova (počítá se od 0, jako ve většině skriptovacích a programovacích jazyků), tj. k „věku“ se přistupuje pomocí
${ar[1]} # 0 => Name, 1 => Age, 2 => Sex, 3 => ID, 4 => Address
nebo, pokud potřebujete najít index prvku podle obsahu, smyčkou přes pole, tj.
function el_index {
cnt=0; for el in "${ar[@]}"; do
[[ $el == "$1" ]] && echo $cnt && break
((++cnt))
done
}
el_index "Age" # => 1
$ export FOO="Name Age Sex ID Address"
Nahradit *Věk věkem – toto odstraní vše před „Věk“:
$ echo ${FOO/*Age/Age}
Age Sex ID Address
Získejte cokoli před „Věk“
$ echo ${FOO/Age*/}
Name
Získejte délku tohoto řetězce (což je index "Věk"):
$ BEGIN=${FOO/Age*/}
$ echo ${#BEGIN}
7