SORU
31 Mart 2009, Salı


Bir bash betiği için doğrulama parametreleri

Toplam herhangi bir bash komut dosyası yapmak için acemi değilim, ama gereksiz olduklarında klasörleri bir dizi kaldırma işlemi otomatik yardımcı olmak için temel bir ile geldim.

#!/bin/bash
rm -rf ~/myfolder1/$1/anotherfolder
rm -rf ~/myfolder2/$1/yetanotherfolder
rm -rf ~/myfolder3/$1/thisisafolder

Böyle uyarılmış

./myscript.sh <{id-number}>

Sorun id-number türü için unutursanızsonra benim yaptığım gibi)potansiyel olarak silmek gerçekten silinmiş istemiyorum. bir çok şey olabilir , o zaman

Komut satırı parametreleri doğrulama herhangi bir form ekleyebilirsiniz bir yolu var mı?Benim durumumda, bunu kontrol etmek iyi olur) bir parametre, b) sayısal ve c) Bu klasör; komut ile devam etmeden önce var.

CEVAP
31 Mart 2009, Salı


#!/bin/sh
die () {
    echo >&2 "$@"
    exit 1
}

[ "$#" -eq 1 ] || die "1 argument required, $# provided"
echo $1 | grep -E -q '^[0-9] $' || die "Numeric argument required, $1 provided"

while read dir 
do
    [ -d "$dir" ] || die "Directory $dir does not exist"
    rm -rf "$dir"
done <<EOF
~/myfolder1/$1/anotherfolder 
~/myfolder2/$1/yetanotherfolder 
~/myfolder3/$1/thisisafolder
EOF

edit: Dizinler içinde ekledim ilk başta, yoksa kontrol kısmı, senaryoyu tamamladıktan özledim. Ayrıca, sorunları açıklamaları gündeme hitaben; düzenli ifade sabit, eq == geçiş.

Bu olması gereken taşınabilir, POSIX uyumlu komut olarak görebildiğim kadarıyla; değil kullandığınız herhangi bir bashisms, aslında önemli çünkü /bin/sh Ubuntu aslında dash Bu gün, bash.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AyfionGaming

    AyfionGaming

    20 ŞUBAT 2013
  • EmperorTigerstar

    EmperorTiger

    14 EYLÜL 2009
  • Wii Minute Radio

    Wii Minute R

    31 Mayıs 2008