Pertama, Anda tidak menambah penghitung. Mengubah COUNTER=$((COUNTER))
ke dalam COUNTER=$((COUNTER + 1))
atau COUNTER=$[COUNTER + 1]
akan meningkatkannya.
Kedua, lebih sulit untuk menyebarkan kembali variabel subkulit ke penerima seperti yang Anda duga. Variabel dalam subkulit tidak tersedia di luar subkulit. Ini adalah variabel lokal untuk proses anak.
Salah satu cara untuk mengatasinya adalah menggunakan file temp untuk menyimpan nilai antara:
TEMPFILE=/tmp/$$.tmp
echo 0 > $TEMPFILE
# Loop goes here
# Fetch the value and increase it
COUNTER=$[$(cat $TEMPFILE) + 1]
# Store the new value
echo $COUNTER > $TEMPFILE
# Loop done, script done, delete the file
unlink $TEMPFILE
COUNTER=1
while [ Your != "done" ]
do
echo " $COUNTER "
COUNTER=$[$COUNTER +1]
done
BASH TERUJI:Centos, SuSE, RH
COUNTER=$((COUNTER+1))
adalah konstruksi yang cukup kikuk dalam pemrograman modern.
(( COUNTER++ ))
terlihat lebih "modern". Anda juga dapat menggunakan
let COUNTER++
jika menurut Anda itu meningkatkan keterbacaan. Kadang-kadang, Bash memberikan terlalu banyak cara untuk melakukan sesuatu - saya kira filosofi Perl - ketika mungkin Python "hanya ada satu cara yang benar untuk melakukannya" mungkin lebih tepat. Itu pernyataan yang bisa diperdebatkan jika pernah ada! Bagaimanapun, saya akan menyarankan tujuannya (dalam hal ini) bukan hanya untuk menambah variabel tetapi (aturan umum) untuk juga menulis kode yang dapat dipahami dan didukung orang lain. Kesesuaian sangat membantu untuk mencapai hal itu.
HTH