Voici une liste:
List = "abcd 1234 jvm something"
Comment obtenir le deuxième élément "1234" sans boucler toute la liste?
aucun espace entre signe égal
$ List="abcd 1234 jvm something"
$ set -- $List
$ echo $2
1234
Quelques autres moyens, bien que moins efficaces que l'utilisation des composants internes de shell
$ echo $List | cut -d" " -f2
1234
$ echo $List | awk '{print $2}'
1234
$ echo $List | sed 's/^.[^ \t]* //;s/ .*//'
1234
$ echo $List | tr " " "\n"|sed -n '2p'
1234
set -- $something
scissions$something
au$IFS
caractère (par l' espace par défaut) et attribue les pièces fendus aux variables de position$1
,$2
...Juste pour compléter la réponse de ghostdog: vous pouvez également mettre
$List
les éléments de s dans un tableau et accéder à l'élément de liste spécifique à partir de là.Notez que les indices de tableau sont comptés 0,1,2, ....
Cela a l'avantage de ne pas polluer l'environnement shell avec trop de nouvelles variables.
la source
echo
:arr=($List)