加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

validation – 验证bash脚本的参数

发布时间:2020-12-15 16:46:08 所属栏目:安全 来源:网络整理
导读:我是一个新手来做任何bash脚本,但我想出了一个基本的,以帮助自动化的过程中删除一些文件夹,因为他们变得不需要。 #!/bin/bashrm -rf ~/myfolder1/$1/anotherfolderrm -rf ~/myfolder2/$1/yetanotherfolderrm -rf ~/myfolder3/$1/thisisafolder 这是这样引
我是一个新手来做任何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。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读