shell进阶篇之变量的扩展应用(3)

8 篇文章 0 订阅
5 篇文章 0 订阅

变量的扩展应用

学习目标
要求进一步熟悉Shell变量的赋值控制,主要练习或验证下列内容:

三种引号对赋值的影响
使用read命令从键盘读取变量值
使用export发布全局变量
步骤
需要按照如下步骤进行。

步骤一:三种引号对变量赋值的影响

1)双引号的应用

使用双引号可以界定一个完整字符串。

[root@svr5 ~]# xx=Follow Heard
-bash: IT: command not found                      //未界定时赋值失败
[root@svr5 ~]# xx="Follow Heard"              //界定后成功
[root@svr5 ~]# touch aa bb                      //创建了两个文件
[root@svr5 ~]# touch "aa bb"                    //创建了一个文件
[root@svr5 ~]# ls                                //查看结果

2)单引号的应用

界定一个完整的字符串,并且可以实现屏蔽特殊符号的功能。

[root@svr5 ~]# test=11
[root@svr5 ~]# echo "$test"
[root@svr5 ~]# echo '$test'

3)反撇号或$()的应用

使用反撇号或$()时,可以将命令执行的标准输出作为字符串存储,因此称为命令替换。

[root@svr5 ~]# tar -czf log-`date +%Y%m%d`.tar.gz /var/log

步骤二:使用read命令从键盘读取变量值

1)read基本用法

执行后从会等待并接受用户输入(无任何提示的情况),并赋值给变量str:

[root@svr5 ~]# read str
What's happen ?                          //随便输入一些文字,按Enter键提交
[root@svr5 ~]# echo $str                  //查看赋值结果
What's happen ?

为了不至于使用户不知所措、莫名其妙,推荐的做法是结合-p选项给出友好提示:

[root@svr5 ~]# read -p "请输入一个整数:" i
请输入一个整数:240
[root@svr5 ~]# echo $i
240

2)stty终端显示控制

将回显功能关闭(stty -echo),

将回显功能恢复(stty echo)。

可参考下列操作创建一个测试脚本:

[root@svr5 ~]# vim user.sh              //创建一个测试脚本
#!/bin/bash
read -p "请输入用户名:"  username              //读取用户名
stty -echo                                  //关闭回显
read -p "请输入密码:"  passwd              //读取密码
stty echo                                  //恢复回显
echo ""                                      //恢复回显后补一个空行
useradd "$username"
echo "$passwd" | passwd --stdin "$username"
[root@svr5 ~]# chmod +x user.sh          //添加执行权限

执行测试脚本user.sh,验证效果:

[root@svr5 ~]# ./user.sh
请输入用户名:  root                          //输入root,回车
请输入密码:                                   //输入1234567(不会显示),回车

步骤三:使用export发布全局变量

默认情况下,自定义的变量为局部变量,只在当前Shell环境中有效,而在子Shell环境中无法直接使用。比如已定义的SCHOOL变量,当进入到sh或bash子Shell后,变量SCHOOL将处于未定义的状态:

[root@svr5 ~]# yy="Follow Heard"
[root@svr5 ~]# echo $yy
Follow Heard
[root@svr5 ~]# bash                              //开启bash子进程
[root@svr5 ~]# echo $yy                          //查看SCHOOL变量值无结果
[root@svr5 ~]# exit                              //返回原有Shell环境
exit
[root@svr5 ~]# echo $yy

若希望定义的变量能被子进程使用,可以使用export命令将其发布为全局变量。使用export发布时,只需指定变量名(可以有多个)即可,也可以通过export命令直接设置新的全局变量:

[root@svr5 ~]# export yy                              //发布已定义的变量
[root@svr5 ~]# export XX="1234"                      //发布新变量

验证刚刚发布的全局变量:

[root@svr5 ~]# bash                                  //进入bash子Shell环境
[root@svr5 ~]# echo $yy                              //查看全局变量的值 .. ..
Follow Heard
[root@svr5 ~]# echo $XX
1234
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值