Saya baru mengenal bash dan tidak dapat menemukan tutorial yang baik untuk menjawab pertanyaan saya.
array=( item1 item2 item3)
for name in ${array[@]}; do
echo current/total
... some other codes
done
Saya ingin menghitung nilai "saat ini" dan "total", sebagai hasil yang diharapkan dari ini:
1/3
2/3
3/3
Terima kasih atas segala tipnya
${array[@]}
tanda kutip ganda. Jika tidak, pemisahan kata akan dilakukan dan Anda akan mendapatkan hasil yang tidak diinginkan, pada input sepertiarray=("item 1" "item 2" "item 3")
.Jawaban:
Anda dapat mengakses indeks array menggunakan
${!array[@]}
dan panjang array menggunakan${#array[@]}
, misalnya:Perhatikan bahwa karena bash array nol diindeks , Anda akan benar-benar mendapatkan:
Jika Anda ingin penghitungan berjalan dari 1, Anda dapat menggantinya
$index
dengan$((index+1))
. Jika Anda menginginkan nilai serta indeks yang dapat Anda gunakan"${array[index]}"
yaitumemberi
sumber
echo ($index+1)/${#array[@]}
:?Indeks nol benar-benar valid jika Anda menganggap indeks sebagai benar-benar offset dari alamat basis array. Sebenarnya itu adalah norma, meskipun bervariasi dari dialek ke dialek. Dengan bahasa Riang tua,
[0]
sebenarnya berisi ukuran maksimum array. jadi itu dimulai dengan[1]
.Dengan beberapa implementasi Dasar, Anda dapat secara sewenang-wenang memilih untuk memiliki salah satu
0
atau1
sebagai indeks pertama. Dan setidaknya satu Basic memungkinkan Anda untuk menunjuk array indeks fron[n]
untuk[m]
. di manan
danm
dapat memiliki nilai integer, bahkan negatif, selaman
kurang dari atau sama denganm
. Nilain
mereka menjadi dikurangi dari yang[index]
dimasukkan, seolah-index-n = 0
olah indeks sesuai dengann
.Tetapi Anda dapat melakukan hal yang sama dan lebih banyak lagi dalam kode Anda sendiri. Anda bahkan dapat membalik urutan array dengan cara ini:
Contoh kode ini sebenarnya hanya sebagian dari satu bahasa. Saya hanya ingin itu lebih mudah dibaca. Variabel langkah digunakan untuk mengontrol arah yang Anda lihat apakah positif atau negatif, dan digunakan untuk menghitung indeks efektif ketika masuk atau keluar dari array, yang sebenarnya selalu positif dari
[0]
.sumber