获取shell脚本参数_linux脚本编写教程

获取shell脚本参数_linux脚本编写教程,第1张

获取shell脚本参数_linux脚本编写教程 在编写脚本的过程中,很多时候都需要我们去设置IP地址,密码之类的变量,为了易用性,我们对这些变量的值都会提供选择范围或者设置随机值以及默认值等。

那么如果我们要判断使用脚本的人有没有输入密码应该怎么做呢?下面看一个常见的例子:#设置与检测数据库root密码配置root=`openssl rand -base64 8|md5sum|cut -c 1-8 `read -p “请输入密码[ root ],默认[ ${root} ]:” root_pass然后我们运行这段:运行结果此时会出现两个情况:用户输入了自定义的密码用户没有输入任何信息首先我们对脚本进行完善一下:#设置与检测数据库root密码配置root=`openssl rand -base64 8|md5sum|cut -c 1-8 `echo -e “请输入密码[ root ],默认[ ${root} ]:n”read root_passecho -e “当前设置的密码: [ $root_pass ]”继续运行执行结果此时可以看到,如果直接回车会出现一个空白的现象,而只有用户输入的情况下才能出现密码,看到这有人会说:你都没设置,有密码才怪。

的确,我还没设置,下面设置一下:#设置与检测数据库root密码配置root=`openssl rand -base64 8|md5sum|cut -c 1-8 `echo -e “请输入密码[ root ],默认[ ${root} ]:n”read root_passif [[ -z “$root_pass” ]];thenroot_pass=$rootfiecho -e “当前设置的密码: [ $root_pass ]”然后执行:出现了默认(随机)密码然后到这里就解决了,看到这可能又有人迷惑了?就这?别急,继续往下看。

上面这个情况是只设置一个变量,但是如果需要设置好多呢?应该怎么办?一个设置加一个判断?NONONO,这样太麻烦了,下面介绍一个比较简单的方法:定义函数函数内容如下:input_check(){#1参未需要设置的变量值[提供默认变量]#2参为这个参数的备注信息[例如:数据库的root密码]#3参为一个随机/默认值#4参为这个变量名if [[ -z “$1” ]];thenecho -e “${red_zt}检测到${2}没有输入,已使用默认值[ ${3} ]${end}”eval `echo “$4=$3″`elseeval `echo “$4=$1″`fi}如何使用呢?我们把上面的案例放进去:input_check(){#1参未需要设置的变量值[提供默认变量]#2参为这个参数的备注信息[例如:数据库的root密码]#3参为一个随机/默认值#4参为这个变量名if [[ -z “$1” ]];thenecho -e “${red_zt}检测到${2}没有输入,已使用默认值[ ${3} ]${end}”eval `echo “$4=$3″`elseeval `echo “$4=$1″`fi}input(){echo -e “$1”read $2}root=`openssl rand -base64 8|md5sum|cut -c 1-8 `input “请输入密码[ root ],默认[ ${root} ]:” root_passinput_check “$root_pass” “数据库[root]密码” “$root” “root_pass”然后执行:通过函数判断并设置变量值有了这个函数之后,我们每次需要判断一个值只需要按照传参要求去调用即可实现默认值和自定义值的配置,例如:#设置与检测数据库root密码配置root=`openssl rand -base64 8|md5sum|cut -c 1-8 `input “请输入密码[ root ],默认[ ${root} ]:” root_passinput_check “$root_pass” “数据库[root]密码” “$root” “root_pass”#数据库初始权限配置input “是否关闭[ root ]用户远程登录[ y/n ],默认[ y ]” dislogininput_check “$dislogin” “数据库[ root ]用户登录权限” “y” “dislogin”#是否删除测试数据库input “是否删除[ test ]数据库[ y/n ],默认[ y ]” rm_dbinput_check “$rm_db” “删除[ test ]数据库确认” “y” “rm_db”#结果汇总red_z_green_z “数据库[ root ]用户密码:” “[ $root_pass ]”red_z_green_z “允许[ root ]远程登录:” “[ $dislogin ]”red_z_green_z “是否删除[ test ]数据库:” “[ $rm_db ]”input “是否继续[回车继续]” Y是不是打开了新大陆呢?其实还可以继续改进这个函数,想了解更多的话关注我等待更新吧。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/tougao/646945.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-17
下一篇 2022-04-17

发表评论

登录后才能评论

评论列表(0条)

保存