Bash führt die Wortaufteilung in Zeichenfolgen ganz von selbst durch – tatsächlich ist es meistens ein Problem, dies zu vermeiden, und der Grund für das Zitieren ist so wichtig. Es ist einfach, das in Ihrem Fall zu nutzen:Fügen Sie Ihren String einfach in ein Array ein, ohne ihn in Anführungszeichen zu setzen – bash verwendet die Wortaufteilung, um die einzelnen Elemente zu trennen. Angenommen, Ihr String ist in der Variablen $str
gespeichert ,
ar=($str) # no quotes!
gibt ein Array von 5 Elementen zurück. Ihr Array-Index ist Ihr Wortindex (von 0 aufwärts zählend, wie in den meisten Skript- und Programmiersprachen), d. h. auf „Alter“ wird mit
zugegriffen${ar[1]} # 0 => Name, 1 => Age, 2 => Sex, 3 => ID, 4 => Address
oder, wenn Sie den Elementindex nach Inhalt finden müssen, durchlaufen Sie das Array, z. B.
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"
*Alter durch Alter ersetzen – dies entfernt alles vor „Alter“:
$ echo ${FOO/*Age/Age}
Age Sex ID Address
Holen Sie sich alles vor "Alter"
$ echo ${FOO/Age*/}
Name
Holen Sie sich die Länge dieser Zeichenfolge (die der Index von „Alter“ ist):
$ BEGIN=${FOO/Age*/}
$ echo ${#BEGIN}
7