Bash effectue tout seul la division des mots dans les chaînes - en fait, le plus souvent, éviter cela est un problème, et la raison pour laquelle la citation est si importante. Il est facile d'en tirer parti dans votre cas :placez simplement votre chaîne dans un tableau sans la citer - bash utilisera le fractionnement de mots pour séparer les éléments individuels. En supposant que votre chaîne est stockée dans la variable $str
,
ar=($str) # no quotes!
renverra un tableau de 5 éléments. Votre index de tableau est votre index de mots (en partant de 0, comme dans la plupart des langages de script et de programmation), c'est-à-dire que "Age" est accessible à l'aide de
${ar[1]} # 0 => Name, 1 => Age, 2 => Sex, 3 => ID, 4 => Address
ou, si vous avez besoin de trouver l'index d'élément par contenu, bouclez sur le tableau, c'est-à-dire
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"
Remplacez * Âge par Âge -- cela supprimera tout ce qui se trouve avant "Âge" :
$ echo ${FOO/*Age/Age}
Age Sex ID Address
Obtenez n'importe quoi avant "Âge"
$ echo ${FOO/Age*/}
Name
Obtenez la longueur de cette chaîne (qui est l'index de "Age") :
$ BEGIN=${FOO/Age*/}
$ echo ${#BEGIN}
7