Shell编程定义变量的方式有哪些?

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

分享至