/ 2019-01-28
1. 三种定义变量的方式
(1) 直接赋值
(2) 传参 (传递参数)
(3) 交互式设置变量,使用read命令
2. read命令说明
在命令行中使用
[root@oldboy scripts]# read 132 [root@oldboy scripts]# echo $REPLY 132 [root@oldboy scripts]# read oldboy 456 [root@oldboy scripts]# echo $oldboy 456 [root@oldboy scripts]# echo $REPLY 132
在脚本中使用
[root@oldboy scripts]# vim oldboy_test.sh #!/bin/bash read -p '请输入:' oldboy echo $oldboy
执行结果
[root@oldboy scripts]# sh oldboy_test.sh 请输入:oldboy_oldboyedu oldboy_oldboyedu
read命令的帮助说明
[root@oldboy scripts]# read --help -bash: read: --: 无效选项 read: 用法:read [-ers] [-a 数组] [-d 分隔符] [-i 缓冲区文字] [-n 读取字符数] [-N 读取字符数] [-p 提示符] [-t 超时] [-u 文件描述符] [-s不显示终端的任何输入] [名称 ...]
3. 定义方法实践
直接赋值方法
[root@oldboy scripts]# vim bianliang.sh name=oldboy age=22 sex=Man hobby=`ls` ethFile=/etc/sysconfig/network-scripts/ifcfg-eth0 echo $hobby ls $ethFile [root@oldboy scripts]# sh bianliang.shbianliang.sh chanshu.sh oldboy.sh oldboy_test.sh panduan.sh quanju.sh xiugaizhuji.sh yhk.sh/etc/sysconfig/network-scripts/ifcfg-eth0
传参 (传递参数)
[root@oldboy scripts]# vim bianliang.sh name=oldboy age=22 sex=Man hobby=$1 ethFile=$2 echo $hobby ls $ethFile [root@oldboy scripts]# sh bianliang.sh oldboy /etc/hostname oldboy/etc/hostname
交互式设置变量 read
[root@oldboy scripts]# vim yhk.sh #!/bin/bash read -p "请输入你的银行卡号:" Yhk read -s -p "请输入密码:" miMa echo echo "你的银行卡号:" $Yhk echo "你的密码为:" $miMa# 测试结果 [root@oldboy scripts]# sh yhk.sh 请输入你的银行卡号:123456 请输入密码: 你的银行卡号: 123456 你的密码为: 123456
4. 写一个交互脚本,实现能够定义主机名及IP地址
脚本内容
[root@oldboy scripts]# cat xiugaizhuji.sh #!/bin/bash ethFile=/etc/sysconfig/network-scripts/ifcfg-eth[01] Now_eth=`hostname -I|awk -F "[. ]+" '{print $4}'` read -p "请输入主机名:" Hostname read -p "请输入IP地址的主机位:" HostIP hostnamectl set-hostname $Hostname sed -i "s#${Now_eth}#${HostIP}#g" $ethFile read -p "是否重启服务器:{yes/no}" REboot if [ $REboot == yes ] then echo "系统将在10秒后重启!" shutdown -r 10 else echo "请稍后手动重启系统!" fi
脚本测试结果
[root@oldboy scripts]# sh xiugaizhuji.sh请输入主机名:oldboy 请输入IP地址的主机位:180 是否重启服务器:{yes/no}yes 系统将在10秒后重启! [root@oldboy scripts]# sh xiugaizhuji.sh请输入主机名:oldboy 请输入IP地址的主机位:180 是否重启服务器:{yes/no}no 请稍后手动重启!
(0)