Bash melakukan pemisahan kata dalam string dengan sendirinya – pada kenyataannya, lebih sering daripada tidak, menghindari itu adalah masalah, dan alasan mengutip sangat penting. Sangat mudah untuk memanfaatkannya dalam kasus Anda:cukup masukkan string Anda ke dalam array tanpa mengutipnya - bash akan menggunakan pemisahan kata untuk memisahkan elemen individual. Dengan asumsi string Anda disimpan dalam variabel $str
,
ar=($str) # no quotes!
akan mengembalikan array 5 elemen. Indeks array Anda adalah indeks kata Anda (menghitung dari 0, seperti di sebagian besar bahasa skrip dan pemrograman), yaitu "Umur" diakses menggunakan
${ar[1]} # 0 => Name, 1 => Age, 2 => Sex, 3 => ID, 4 => Address
atau, jika Anda perlu menemukan indeks elemen berdasarkan konten, lewati larik, yaitu
function el_index {
cnt=0; for el in "${ar[@]}"; do
[[ $el == "$1" ]] && echo $cnt && break
((++cnt))
done
}
el_index "Age" # => 1
$ export FOO="Name Age Sex ID Address"
Ganti *Usia dengan Usia -- ini akan menghapus apa pun sebelum "Usia":
$ echo ${FOO/*Age/Age}
Age Sex ID Address
Dapatkan apa saja sebelum "Age"
$ echo ${FOO/Age*/}
Name
Dapatkan panjang string tersebut (yang merupakan indeks "Umur"):
$ BEGIN=${FOO/Age*/}
$ echo ${#BEGIN}
7