9 Mayıs 2012, ÇARŞAMBA
Bash döngü içinde artış çalışmıyor sayacı
Bir döngü çalıştırıyorum aşağıdaki basit komut dosyası var ve COUNTER
korumak istiyorum. Sayaç güncelleme değil neden anlamaya kuramıyorum. Thats oluşturulan almak koşullardan dolayı mı? Nasıl potansiyel olarak bunu düzeltebilir miyim?
#!/bin/bash
WFY_PATH=/var/log/nginx
WFY_FILE=error.log
COUNTER=0
grep 'GET /log_' $WFY_PATH/$WFY_FILE | grep 'upstream timed out' | awk -F ', ' '{print $2,$4,$0}' | awk '{print "http://domain.com"$5"&ip="$2"&date="$7"&time="$8"&end=1"}' | awk -F '&end=1' '{print $1"&end=1"}' |
(
while read WFY_URL
do
echo $WFY_URL #Some more action
COUNTER=$((COUNTER 1))
done
)
echo $COUNTER # output = 0
CEVAP
9 Mayıs 2012, ÇARŞAMBA
İlk olarak, sayaç artıyor. COUNTER=$((COUNTER 1))
COUNTER=$[COUNTER 1]
COUNTER=$((COUNTER))
değişen artacak.
İkinci olarak, tahmin olarak geri-yay aranan değişkenleri bölgeler için yanıltıcıdır. Bir kabuk değişkenleri bölgeler dışında kullanılamaz. Bu değişkenler alt işlem için yerel.
Bunu çözmenin bir yolu ara değeri depolamak için bir geçici dosya kullanarak
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
Bunu Paylaş:
Döngü ile artış sayacı...
Neden benim program tam olarak 8192 el...
Bash dosya içeriğini döngü?...
Bash komut dizeleri bir dizi döngü?...
Sözdizimi döngü sırasında tek satırlık...