OnWorks Linux ve Windows Çevrimiçi İş İstasyonları

Logo

İş İstasyonları için Çevrimiçi Ücretsiz Barındırma

<Önceki | İçerik | Sonraki>

Beklenmeyen Genişletmeler

Bir komut dosyasında yalnızca ara sıra ortaya çıkan hataların olması mümkündür. Bazen komut dosyası düzgün çalışır, bazen de genişletmenin sonuçları nedeniyle başarısız olur. Eksik noktalı virgülümüzü döndürüp değerini değiştirirsek numara boş bir değişkene, biz


gösterebilir:



#! / Bin / bash


# sorun: yaygın hataları gösteren komut dosyası


sayı=


if [ $sayı = 1 ]; sonra

echo "Sayı 1'e eşittir." Başka

echo "Sayı 1'e eşit değil."

fi

#! / Bin / bash


# sorun: yaygın hataları gösteren komut dosyası


sayı=


if [ $sayı = 1 ]; sonra

echo "Sayı 1'e eşittir." Başka

echo "Sayı 1'e eşit değil."

fi


Komut dosyasını bu değişiklikle çalıştırmak çıktıyla sonuçlanır:



[ben@linuxbox ~]$ sorun

/home/me/bin/trouble: satır 7: [: =: tekli operatör bekleniyor Sayı 1'e eşit değil.

[ben@linuxbox ~]$ sorun

/home/me/bin/trouble: satır 7: [: =: tekli operatör bekleniyor Sayı 1'e eşit değil.


Bu oldukça şifreli hata mesajını alıyoruz ve bunu ikinci mesajın çıktısı takip ediyor. kaçırmak emretmek. Sorun, kapsamın genişletilmesidir. numara içindeki değişken test emretmek. Komut ne zaman:



[ $sayı = 1 ]

[ $sayı = 1 ]


ile genişlemeye uğrar numara boş olduğundan sonuç şudur:


[ = 1 ]

[ = 1 ]


bu geçersizdir ve hata oluşturulur. = operatör ikili bir operatördür (her iki tarafta da bir değer gerektirir), ancak ilk değer eksiktir, dolayısıyla test komut tekli bir operatör bekler (örneğin -z) yerine. Ayrıca, tarihten bu yana test başarısız oldu (hata nedeniyle), if komut sıfır olmayan bir çıkış kodu alır ve buna göre hareket eder ve ikinci kaçırmak komut yürütülür.

Bu sorun, ilk argümanın etrafına tırnak işaretleri eklenerek düzeltilebilir. test

komut:


[ "$sayı" = 1 ]

[ "$sayı" = 1 ]


Daha sonra genişleme meydana geldiğinde sonuç şu olacaktır:



[ "" = 1 ]

[ "" = 1 ]


bu da doğru sayıda argüman sağlar. Boş dizelere ek olarak, gömülü boşluk içeren dosya adlarında olduğu gibi, bir değerin çok kelimeli dizelere genişleyebileceği durumlarda tırnak işaretleri kullanılmalıdır.


OnWorks'te En İyi OS Bulut Bilişimi: