2013-03-22 49 views
6

boşluk ayrılmış belirteçleri ile bir dizi dönüştürmek için. Ben o dizeyi alıp, onun bir dizi yapmak nasıl

böylece ben

IFS=' ' read -a list <<< $STRING 

ama sonra denedim

array[0] = first 
array[1] = second 

vb .. ı bir

ne zaman
echo ${list[@]} 

sadece baskı yapar ut "ilk" ve başka bir şey

+0

: Daha sonra, ilk ilan aşağıdaki komutu 's etkileri kullanmak zorunda http://stackoverflow.com/questions/918886/how-do-i-split-a-string-on -A-sınırlayıcı – ceving

cevap

11

Çok basit aslında: daha verbosely

list=($STRING) 

Veya:

declare -a list=($STRING) 

PS: Sen IFS ihracat ve aynı komuta yeni değeri kullanamazsınız . Buraya bakın

$ list=(first second third) 
$ IFS=":" echo "${list[*]}" 
first second third 
$ IFS=":" ; echo "${list[*]}" 
first:second:third 
+0

işe yaradı harika. Ama neyi bölmek gerektiğini nereden biliyor? – Dan

+0

"IFS" varsayılan değeri "\ t \ n \ r" veya benzeri bir şeydir. '()' -syntax öğesini kullanarak bir diziye atanırken parantezler arasındaki her şey, bir komutun parametreleri gibi genişler ve her "parametreyi" dizinin bir öğesine döndürür. – svckr

İlgili konular