SORU
23 EYLÜL 2008, Salı


Bash değişken kapsamı

Lütfen açıkla bana en son "neden" deyimi boş mu? echo Değeri 1 ise döngü içinde artan olmadığını düşünüyorum:

#!/bin/bash
OUTPUT="name1 ip ip status" # normally output of another command with multi line output

if [ -z "$OUTPUT" ]
then
        echo "Status WARN: No messages from SMcli"
        exit $STATE_WARNING
else
        echo "$OUTPUT"|while read NAME IP1 IP2 STATUS
        do
                if [ "$STATUS" != "Optimal" ]
                then
                        echo "CRIT: $NAME - $STATUS"
                        echo $((  XCODE))
                else
                        echo "OK: $NAME - $STATUS"
                fi
        done
fi

echo $XCODE

Böyle büyük mükafat yöntemi yerine aşağıdaki ifadeyi kullanarak denedim

XCODE=`expr $XCODE   1`

ve bunu da yaparken deyimi dışında baskı alışkanlık. Değişken kapsamı hakkında bir şeyler kaçırıyorum ama eski sayfa değil mi, söylesene dostum?

CEVAP
23 EYLÜL 2008, Salı


Bu süre içinde döngü boru olduğun için, alt kabuğu ise döngü çalıştırmak için oluşturulur. Şimdi bu çocuk işlem ortamı kendi kopyası vardır ve herhangi geçebilir mi değişkenleri üst arka (herhangi bir unix, işlem gibi).

Bu nedenle döngü içine boru değilsin ki yeniden düzenlemelisiniz. Alternatif olarak örneğin bir işlevi ve değeri echo olabilir alt işlem geri verilmesini istiyor.

http://tldp.org/LDP/abs/html/subshells.html#SUBSHELL

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Eric Anthony

    Eric Anthony

    13 AĞUSTOS 2011
  • MandMEvangelists

    MandMEvangel

    28 Ocak 2008
  • Monica Catral

    Monica Catra

    12 NİSAN 2009