获取shell脚本参数(linux脚本编写教程)

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

那么如果我们要判断使用脚本的人有没有输入密码应该怎么做呢?下面看一个常见的例子:

#设置与检测数据库root密码配置

root=`openssl rand -base64 8|md5sum|cut -c 1-8 `

read -p “请输入密码[ root ],默认[ ${root} ]:” root_pass

然后我们运行这段:Shell脚本技巧-优雅的判断用户输入值并设置默认值Shell脚本技巧-优雅的判断用户输入值并设置默认值

运行结果

此时会出现两个情况:

  1. 用户输入了自定义的密码
  2. 用户没有输入任何信息

首先我们对脚本进行完善一下:

#设置与检测数据库root密码配置

root=`openssl rand -base64 8|md5sum|cut -c 1-8 `

echo -e “请输入密码[ root ],默认[ ${root} ]:n”

read root_pass

echo -e “当前设置的密码: [ $root_pass ]”

继续运行Shell脚本技巧-优雅的判断用户输入值并设置默认值Shell脚本技巧-优雅的判断用户输入值并设置默认值

执行结果

此时可以看到,如果直接回车会出现一个空白的现象,而只有用户输入的情况下才能出现密码,看到这有人会说:你都没设置,有密码才怪。的确,我还没设置,下面设置一下:

#设置与检测数据库root密码配置

root=`openssl rand -base64 8|md5sum|cut -c 1-8 `

echo -e “请输入密码[ root ],默认[ ${root} ]:n”

read root_pass

if [[ -z “$root_pass” ]];then

root_pass=$root

fi

echo -e “当前设置的密码: [ $root_pass ]”

然后执行:Shell脚本技巧-优雅的判断用户输入值并设置默认值Shell脚本技巧-优雅的判断用户输入值并设置默认值

出现了默认(随机)密码

然后到这里就解决了,看到这可能又有人迷惑了?就这?

别急,继续往下看。

上面这个情况是只设置一个变量,但是如果需要设置好多呢?应该怎么办?一个设置加一个判断?

NONONO,这样太麻烦了,下面介绍一个比较简单的方法:定义函数

函数内容如下:

input_check(){

#1参未需要设置的变量值[提供默认变量]

#2参为这个参数的备注信息[例如:数据库的root密码]

#3参为一个随机/默认值

#4参为这个变量名

if [[ -z “$1” ]];then

echo -e “${red_zt}检测到${2}没有输入,已使用默认值[ ${3} ]${end}”

eval `echo “$4=$3″`

else

eval `echo “$4=$1″`

fi

}

如何使用呢?我们把上面的案例放进去:

input_check(){

#1参未需要设置的变量值[提供默认变量]

#2参为这个参数的备注信息[例如:数据库的root密码]

#3参为一个随机/默认值

#4参为这个变量名

if [[ -z “$1” ]];then

echo -e “${red_zt}检测到${2}没有输入,已使用默认值[ ${3} ]${end}”

eval `echo “$4=$3″`

else

eval `echo “$4=$1″`

fi

}

input(){

echo -e “$1”

read $2

}

root=`openssl rand -base64 8|md5sum|cut -c 1-8 `

input “请输入密码[ root ],默认[ ${root} ]:” root_pass

input_check “$root_pass” “数据库[root]密码” “$root” “root_pass”

然后执行:Shell脚本技巧-优雅的判断用户输入值并设置默认值Shell脚本技巧-优雅的判断用户输入值并设置默认值

通过函数判断并设置变量值

有了这个函数之后,我们每次需要判断一个值只需要按照传参要求去调用即可实现默认值和自定义值的配置,例如:

#设置与检测数据库root密码配置

root=`openssl rand -base64 8|md5sum|cut -c 1-8 `

input “请输入密码[ root ],默认[ ${root} ]:” root_pass

input_check “$root_pass” “数据库[root]密码” “$root” “root_pass”

#数据库初始权限配置

input “是否关闭[ root ]用户远程登录[ y/n ],默认[ y ]” dislogin

input_check “$dislogin” “数据库[ root ]用户登录权限” “y” “dislogin”

#是否删除测试数据库

input “是否删除[ test ]数据库[ y/n ],默认[ y ]” rm_db

input_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

是不是打开了新大陆呢?其实还可以继续改进这个函数,想了解更多的话关注我等待更新吧。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至624739273@qq.com举报,一经查实,本站将立刻删除。
Like (0)
柳的头像

相关推荐

  • 市场营销网站优化技巧有哪些,2024互联网市场营销趋势分析

    传统行业需要营销,互联网时代也需要营销。人们习惯了传统的方式例如地推式的推销,登门拜访式的营销。如今都联网了还需要这种方式吗?这种方式是不是落伍了没任何意义了。 这一些或许正是我们…

    2024年8月25日
  • 战斗机器人有什么意义吗?

    前两次的世界大战,挨打的国家已经意识到武器装备之于战争的决定性作用。或许,中国的小米加步枪战略、战术在抗日战争中发挥了重要作用,军人的意志、单兵作战能力以及《孙子兵法》里的韬略等等…

    2024年9月16日 投稿
  • 如何追天蝎女(打动天蝎女的100招)

    在十二星座中,天蝎座的性格特点是什么样的呢?以下是关于天蝎座女人性格特点全面分析。如果你正在追求天蝎座的人,可以点进来看看哦! 天蝎座女人性格特点全面分析   天蝎座女人性格特点详…

    2024年8月28日 投稿
  • sql2000个人版和企业版(附安装教程)

    sql2000个人版,全称也叫做sql server 2000个人版,是目前行业中使用广泛的数据库管理软件,具备高性能设计,系统管理先进,强壮的事务处理功能,其性能、可伸缩性及可靠…

    2024年8月28日 投稿
  • dvd转换器破解版(转换器使用说明)

    在生活工作中我们都会用很多视频,但是我们也遇到很多视频的格式和使用的设备不匹配,也不能为打开某一种格式去另找设备,也不可能每种格式都去准备一个可以打开的设备,怎么转换视频格式也成了…

    2024年9月1日 投稿
  • word论文目录怎么做,照这个方法做既美观又简单

    编按:在使用Word制作长文档时,目录必不可少。有了目录,无论是查找内容或阅读内容都会更方便。但很多人却不得其法,始终采用纯手工输入目录。今天,小编将教大家自动生成主目录和子目录的…

    2024年8月26日 投稿

发表回复

Please Login to Comment
微信
微信
SHARE
TOP
要想花得少,就用购宝。话费电费9折起,官方公众号:购宝