SORU
14 Mayıs 2012, PAZARTESİ


Bash bir diziye bir dize bölmek

Bir Bash betiği içinde parçalara bölünmüş bir çizgi ve bir diziye koymak istiyorum.

Satır:

Paris, France, Europe

Bir dizi onları böyle olsun istiyorum:

array[0] = Paris
array[1] = France
array[2] = Europe

Basit bir kod kullanmak istiyorum, komut hızını önemli değil. Bunu nasıl yapabilirim?

CEVAP
14 Mayıs 2012, PAZARTESİ


IFS=', ' read -a array <<< "$string"

Tek bir öğesine erişmek için:

echo "${array[0]}"

Öğeler üzerinde yineleme için:

for element in "${array[@]}"
do
    echo "$element"
done

Endeks hem de değeri almak için:

for index in "${!array[@]}"
do
    echo "$index ${array[index]}"
done

Son örnek Bash diziler seyrek olduğu için yararlıdır. Diğer bir deyişle, bir öğe silmek veya bir öğe eklemek ve sonra endeksleri bitişik değil.

unset "array[1]"
array[42]=Earth

Bir dizideki öğe sayısını almak için:

echo "${#array[@]}"

Yukarıda da belirtildiği gibi, diziler uzunluğu son elemanı almak için kullanmamalısın çok seyrek olabilir. 4.2 ve daha sonra Bash:

echo "${array[-1]}"

Bash (bir yere 2.05 b): herhangi bir sürümü

echo "$array[@]: -1:1}

Büyük negatif uzaklıklar daha dizinin sonuna seçin. Eski formunda eksi işaretinden önce boşluk unutmayın. Gereklidir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GOTO Conferences

    GOTO Confere

    3 EKİM 2011
  • LAHWF

    LAHWF

    5 Kasım 2009
  • Madeon

    Madeon

    31 Ocak 2010