05 linux shell脚本 变量的取用echo;变量的设置和修改;变量的使用规范以及示例


在这里插入图片描述

变量 就是以一组文字或符号等,来取代一些配置或者是一串保留的数据!

变量的取用: echo

# ehco $PATH
# 和
# echo ${PATH}
# 作用相同
[userwin@MiWiFi-R3L-srv ~]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/java/jdk8u275-b01/bin:/usr/local/bin:/usr/bin:/usr/local/zookeeper/bin:/usr/local/sbin:/usr/sbin
[userwin@MiWiFi-R3L-srv ~]$ echo ${PATH}
/usr/lib64/qt-3.3/bin:/usr/local/java/jdk8u275-b01/bin:/usr/local/bin:/usr/bin:/usr/local/zookeeper/bin:/usr/local/sbin:/usr/sbin
[userwin@MiWiFi-R3L-srv ~]$ echo ${HOME}
/home/userwin

变量的设置和修改

# 设置变量myName
[userwin@MiWiFi-R3L-srv ~]$ myName=userwin
[userwin@MiWiFi-R3L-srv ~]$ echo $myName 
userwin
# 修改myName的值
[userwin@MiWiFi-R3L-srv ~]$ myName=lingyi
[userwin@MiWiFi-R3L-srv ~]$ echo $myName 
lingyi

linux 变量 规则

  • 变量与变量内容以一个等号『=』来连结
  • 等号两边不能直接接空格符
  • 变量名称只能是英文字母与数字,但是开头字符不能是数字
  • 变量内容若有空格符可使用双引号『"』或单引号『’』将变量内容结合起来
  • 可用跳脱字符(转义符)『 \ 』将特殊符号(如 [Enter], $, , 空格符, '等)变成一般字符
  • 在一串命令中,还需要藉由其他的命令提供的信息,可以使用反单引号『`命令`』或 『$(命令)』
[userwin@MiWiFi-R3L-srv ~]$ Lip="aa `hostname`"
[userwin@MiWiFi-R3L-srv ~]$ echo $Lip
aa MiWiFi-R3L-srv

[userwin@MiWiFi-R3L-srv ~]$ Lip="ip $(hostname)"
[userwin@MiWiFi-R3L-srv ~]$ echo $Lip
ip MiWiFi-R3L-srv
  • 若该变量为扩增变量内容时,则可用 “$变量名称” 或 ${变量} 累加内容
[userwin@MiWiFi-R3L-srv ~]$ con="$con add ”
[userwin@MiWiFi-R3L-srv ~]$ echo $con
context
[userwin@MiWiFi-R3L-srv ~]$ con2="$con add" 
[userwin@MiWiFi-R3L-srv ~]$ echo $con2
context add
[userwin@MiWiFi-R3L-srv ~]$ con3="$con2 "new
[userwin@MiWiFi-R3L-srv ~]$ echo $con3
context add new
[userwin@MiWiFi-R3L-srv ~]$ con4=${con3} context
-bash: context: 未找到命令
# ${con3} context 中间有空格 就需要用 双引号“” 或者单引号‘’ 括起来
[userwin@MiWiFi-R3L-srv ~]$ con4=${con3}context
[userwin@MiWiFi-R3L-srv ~]$ echo $con4
context add newcontext
  • 若该变量需要在其他子程序运行,则需要以 export 来使变量变成环境变量
  • 通常大写字符为系统默认变量,自行配置变量可以使用小写字符,方便判断
  • 取消变量的方法为使用 unset

更多示例

范例一:配置一变量 name ,且内容为 VBird
[root@www ~]# 12name=VBird
-bash: 12name=VBird: command not found  <==屏幕会显示错误!因为不能以数字开头!
[root@www ~]# name = VBird            <==还是错误!因为有空白!
[root@www ~]# name=VBird              <==OK 的啦!

范例二:承上题,若变量内容为 VBird's name 呢,就是变量内容含有特殊符号时:
[root@www ~]# name=VBird's name  
# 单引号与双引号必须要成对,在上面的配置中仅有一个单引号,因此当你按下 enter 后,
# 你还可以继续输入变量内容。这与我们所需要的功能不同,失败啦!
# 记得,失败后要复原请按下 [ctrl]-c 结束!
[root@www ~]# name="VBird's name"    <==OK 的啦!
# 命令是由左边向右找→,先遇到的引号先有用,因此如上所示,单引号会失效!
[root@www ~]# name='VBird's name'    <==失败的啦!
# 因为前两个单引号已成对,后面就多了一个不成对的单引号了!因此也就失败了!
[root@www ~]# name=VBird\'s\ name     <==OK 的啦!
# 利用反斜杠 (\) 跳脱特殊字符,例如单引号与空格键,这也是 OK 的啦!

范例三:我要在 PATH 这个变量当中『累加』:/home/dmtsai/bin 这个目录
[root@www ~]# PATH=$PATH:/home/dmtsai/bin
[root@www ~]# PATH="$PATH":/home/dmtsai/bin
[root@www ~]# PATH=${PATH}:/home/dmtsai/bin
# 上面这三种格式在 PATH 里头的配置都是 OK 的!但是底下的例子就不见得啰!

范例四:承范例三,我要将 name 的内容多出 "yes" 呢?
[root@www ~]# name=$nameyes  
# 知道了吧?如果没有双引号,那么变量成了啥?name 的内容是 $nameyes 这个变量!
# 呵呵!我们可没有配置过 nameyes 这个变量吶!所以,应该是底下这样才对!
[root@www ~]# name="$name"yes
[root@www ~]# name=${name}yes  <==以此例较佳!

范例五:如何让我刚刚配置的 name=VBird 可以用在下个 shell 的程序?
[root@www ~]# name=VBird
[root@www ~]# bash        <==进入到所谓的子程序
[root@www ~]# echo $name  <==子程序:再次的 echo 一下;
       <==嘿嘿!并没有刚刚配置的内容喔!
[root@www ~]# exit        <==子程序:离开这个子程序
[root@www ~]# export name
[root@www ~]# bash        <==进入到所谓的子程序
[root@www ~]# echo $name  <==子程序:在此运行!
VBird  <==看吧!出现配置值了!
[root@www ~]# exit        <==子程序:离开这个子程序
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EngineerForSoul

你的鼓励是我孜孜不倦的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值