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

  • pain975

    pain975

    27 NİSAN 2008
  • SolidWorksTutoriels

    SolidWorksTu

    14 Kasım 2013
  • talkandroid

    talkandroid

    27 Mayıs 2010