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
#!/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
.
Kendisi tam yolunu almak için bir bash...
Neden ihtiyacın var mı/. (çizgi, nokta...
Nasıl eğer o ölürse bir yeniden başlat...
Nasıl/kabuk betiği bash http yanıt kod...
Nasıl isteğe bağlı giriş bağımsız deği...