Oto LISTA:
List = "abcd 1234 jvm something"
Jak zdobyć drugi element „1234” bez zapętlania całej listy?
bez spacji między znakiem równości
$ List="abcd 1234 jvm something"
$ set -- $List
$ echo $2
1234
Niektóre inne sposoby, choć nie tak wydajne jak używanie wewnętrznych elementów powłoki
$ 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
rozłamów$something
w$IFS
charakterze (domyślnie spacja) i przypisuje częściach Splitu do zmiennych pozycyjnych$1
,$2
...Tylko w celu uzupełnienia odpowiedzi ghostdog: możesz również umieścić
$List
elementy w tablicy i stamtąd uzyskać dostęp do określonego elementu listyZauważ, że indeksy tablicowe są zliczane 0,1,2, ....
Ma to tę zaletę, że nie zanieczyszcza środowiska powłoki zbyt dużą liczbą nowych zmiennych.
źródło
echo
:arr=($List)