validation – 验证bash脚本的参数

前端之家收集整理的这篇文章主要介绍了validation – 验证bash脚本的参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是一个新手来做任何bash脚本,但我想出了一个基本的,以帮助自动化的过程中删除一些文件夹,因为他们变得不需要。
#!/bin/bash
rm -rf ~/myfolder1/$1/anotherfolder
rm -rf ~/myfolder2/$1/yetanotherfolder
rm -rf ~/myfolder3/$1/thisisafolder

这是这样引起的:

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

问题是,如果你忘记键入id-number(如我刚才那样),那么它可能会删除很多你真的不想删除的东西。

有没有办法可以添加任何形式的验证命令行参数?在我的情况下,它是好的检查a)有一个参数,b)它的数字,和c)该文件夹存在;然后继续脚本。

#!/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

编辑:我错过了关于检查目录是否存在的部分,所以我添加了,完成脚本。还讨论了评论中提出的问题;固定正则表达式,从==切换到eq。

这应该是一个便携式,POSIX兼容脚本,据我所知;它不使用任何bashisms,这实际上是重要的,因为/ bin / sh在Ubuntu上实际上是破折号这些天,而不是bash。

猜你在找的Bash相关文章