bash listesindeki elemanları nasıl alabilirim?


40

İşte bir LİSTE:

List = "abcd 1234 jvm something"

İkinci listeyi "1234" tüm listeyi döngülemeden nasıl alabilirim?

Yanıtlar:


50

eşit işaret arasında boşluk yok

$ List="abcd 1234 jvm something"
$ set -- $List
$ echo $2
1234

Diğer bazı yollar, kabuğun içindekileri kullanmak kadar verimli olmasa da

$ 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

Thanks.Programdaki bazı yorumlarınızı verir misiniz lütfen?
SpawnST

1
İkinci satır demek istiyorum.
SpawnST

17
@Spawn set -- $somethingbölünme $somethingde $IFSpozisyonel değişkenlere (varsayılan boşluk) karakteri ve atar bölünmüş parçaları $1, $2...
Benjamin Bannier

43

Sadece ghostdog'un cevabını desteklemek için: $Listelemanlarını bir diziye koyabilir ve oradaki belirli liste elemanına erişebilirsiniz.

List="abcd 1234 jvm something"
arr=($List)
echo ${arr[1]}

Dizi indekslerinin 0,1,2, ... sayıldığını unutmayın.

Bu, kabuk ortamını çok fazla yeni değişkenle kirletmeme avantajına sahiptir.


Bu güzel. :-)
SpawnST

1
gerek yok echo: arr=($List)
user31894 19:10

@ghostdog muhtemelen zorlayıcı davranış düzenledi.
Benjamin Bannier

@ BenjaminBannier, nasıl birden fazla eleman seçebilirsiniz. $ {Arr [1,2,3]} $ gibi bazı sözdizimi var mı?
Kvothe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.