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

本文介绍了Shell脚本中定义变量的三种方式:直接赋值、通过参数传递和交互式设置。详细讲解了`read`命令的使用,并提供了在命令行和脚本中使用`read`的示例。此外,还展示了如何编写交互式脚本,包括获取用户输入的银行卡号和密码,以及更新主机名和IP地址的脚本。最后,给出了脚本的执行结果。

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

请稍后手动重启!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值