Saya harus beralih dari string ke array di mana setiap entri adalah setiap kata pada string itu. Misalnya, dimulai dengan:
VotePedro="Vote for Pedro"
Saya membutuhkan array:
Vote
For
Pedro
Yang kemudian bisa saya ulangi sebagai:
for i in "${votePedroArray[@]}"
do
## Do something
done
bash
shell-script
string
array
farid99
sumber
sumber
votePedroArray=("Vote" "For" "Pedro")
akan memberi Anda array panjang 3. Dan${VotePedro}
sama seperti$VotePedro
dalam konteks ini. Untuk mengakses elemen array individual, Anda dapat menggunakan tanda kurung yang mirip dengan yang Anda miliki untuk loop for di pertanyaan Anda. mis.${votePedroArray[0]}
adalah elemen pertama dalam array ("Vote" untuk contoh ini)Ketika Anda membiarkan ekspansi variabel tanpa tanda kutip, misalnya
$VotePedro
, langkah-langkah berikut dilakukan:IFS
variabel; secara default itu ruang, tab, dan baris baru.Dengan demikian, Anda dapat membagi string menjadi elemen-elemen yang dibatasi-spasi (dengan asumsi nilai default
IFS
) dengan mematikan ekspansi wildcard dan memperluas variabel yang nilainya string di luar tanda kutip.Anda dapat langsung melakukan pemisahan pada titik penggunaan; ini akan bekerja bahkan pada shell seperti sh yang tidak memiliki array:
sumber
Selain memecahnya
$IFS
, Anda juga bisa memecahnya pada apa pun yang Anda suka:... yang akan memungkinkan spasi kosong memisahkan bidang nol, bahkan
sumber