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。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |