/ 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)