SORU
12 EYLÜL 2008, Cuma


Bir dizin olmadığını kontrol kabuk var

Ne bir komut dizini yok veya yok olmadığını kontrol etmek için kullanılabilir, bir kabuk içinde?

CEVAP
12 EYLÜL 2008, Cuma


Eğer bir dizinin bir kabuk içinde olup olmadığını kontrol etmek için aşağıdaki gibi kullanabilirsiniz:

if [ -d "$DIRECTORY" ]; then
  # Control will enter here if $DIRECTORY exists.
fi

Ya da kontrol etmek için eğer bir dizin mevcut değilse.:

if [ ! -d "$DIRECTORY" ]; then
  # Control will enter here if $DIRECTORY doesn't exist.
fi

Jon Ericson işaret ettiği gibi ancak, (teşekkürler Jon), sonraki komutları bir dizine bir sembolik bağ da bu onay geçeceğini dikkate almanız eğer beklendiği gibi çalışmayabilir. E. g. bu çalışan:

ln -s "$ACTUAL_DIR" "$SYMLINK"
if [ -d "$SYMLINK" ]; then 
  rmdir "$SYMLINK" 
fi

Üretecek hata iletisi:

rmdir: failed to remove `symlink': Not a directory

Sembolik bağlantılar varsa izleyen komutları dizinleri bekliyoruz eğer farklı muamele, olabilir:

if [ -d "$LINK_OR_DIR" ]; then 
  if [ -L "$LINK_OR_DIR" ]; then
    # It is a symlink!
    # Symbolic link specific commands go here.
    rm "$LINK_OR_DIR"
  else
    # It's a directory!
    # Directory command goes here.
    rmdir "$LINK_OR_DIR"
  fi
fi

Özellikle çift tırnak değişkenleri sarmak için kullanılan, bu 8jean in another answer tarafından açıklanmıştır sebebi de not alın.

Eğer değişkenler boşluk veya diğer olağan dışı karakterler içeriyorsa, muhtemelen komut başarısız olmasına neden olur.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ★ByScrapi★ Designs

    ★ByScrapi

    27 AĞUSTOS 2013
  • Autodesk 3ds Max Learning Channel

    Autodesk 3ds

    23 HAZİRAN 2010
  • infodirt

    infodirt

    11 Mart 2009

İLGİLİ SORU / CEVAPLAR