2010-02-25 24 views
29

Ben şeyler yapıyor başlamadan önce belirli ortam değişkenleri ayarlanmış olduklarını kontrol gereken birkaç csh komut var, bu yüzden bu tür bir şey yapın: yazarak bir sürücsh deyimiyle ortam değişkeni varlığını kontrol etmek için?

if ! $?STATE then 
    echo "Need to set STATE" 
    exit 1 
endif 

if ! $?DEST then 
    echo "Need to set DEST" 
    exit 1 
endif 

. Bir ortam değişkeninin önceden ayarlanmış olup olmadığını kontrol etmek için daha zarif bir deyim var mı?

Notlar:

  • This question

    oldukça benzerdir, ancak spesifik olarak Bash içinde çözeltiler sorar.
  • İnsanların csh'den uzak durmamı tavsiye etmiyorum çünkü lanetli, korkutucu ya da bash daha iyidir. Özellikle şu anda kullandığımdan daha zarif bir çözümle ilgileniyorum.
+0

[Bu yeni, benzer bir soru] (http://stackoverflow.com/questions/13343392/how-to-check-if-an-environment-variable-is- ya-unset-or-set-to-the-boş-stri) ayrıca bir ifade bağlamında nasıl kontrol edileceğini gösterir eğer burada/else/endif mümkün değilse – cfi

cevap

19

Bunu (Aksi değişken ayarlanırsa, 1 olarak değerlendirilir $?VAR sözdizimi kullanarak koşulu, ve 0 ile if deyimi) yapıyoruz yolu muhtemelen yapar en deyimsel csh yapısı olduğunu düşünüyorum Ne istiyorsunuz.

-4

aşağıdaki deneyin:

[ -z STATE ] && echo "Need to set STATE" 

[ ! -z DEST ] && echo "Need to set STATE" 
+1

Burada söylemeye çalıştığınız şey net değil. aynı mesajın tersi mantık parçaları. –

+1

Her durumda bu csh değil – supergra