Hier ist eine Liste:
List = "abcd 1234 jvm something"
Wie erhalte ich das zweite Element "1234", ohne die gesamte Liste zu durchlaufen?
Keine Leerzeichen zwischen Gleichheitszeichen
$ List="abcd 1234 jvm something"
$ set -- $List
$ echo $2
1234
Einige andere Möglichkeiten, obwohl nicht so effizient wie die Verwendung von Shell-Interna
$ 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
spaltet$something
an der$IFS
Zeichen (mit Standard - Space) und ordnet die getrennten Teile der Positionsgrößen$1
,$2
...Nur um die Antwort von ghostdog zu ergänzen: Sie können die
$List
Elemente auch in ein Array einfügen und von dort aus auf das spezifische Listenelement zugreifenBeachten Sie, dass die Array-Indizes mit 0,1,2, ... gezählt werden.
Dies hat den Vorteil, dass die Shell-Umgebung nicht mit zu vielen neuen Variablen belastet wird.
quelle
echo
:arr=($List)