五shell变量与字符串操作
特点:1 shell变量没有数据类型的区分
   2 Shell 把任何存储在变量中的值,皆视为以字符组成的“字符串”。
    3  设定的变量值只在当前shell环境中有作⽤
    4  不能以数字开头
    5  =号两边不能存在空格
    6  若变量值中存在空格,必须⽤括号将变量值括起来  I = “Jack  Black”
在编写shell时,如果变量未赋值,后续使⽤时不会出现任何错误。如果要显⽰错误提⽰,则需要命令  shopt -s -o nounset
shopt -s -o nounset解析如下
.范例如下
[root@localhost ~]# vim test1.sh
#!/bin/bash
echo $Infomix
[root@localhost ~]# sh test1.sh
# 未提⽰任何错误
[root@localhost ~]# vim test1.sh
[root@localhost ~]# vim test1.sh
#!/bin/bash
shopt -s -o nounset  #添加错误提⽰
echo $Infomix
[root@localhost ~]# sh test1.sh
test1.sh:⾏4: Infomix: 为绑定变量  #提⽰错误
⼆取得变量值
$变量名称=${变量名称}
如果变量作为字符的⼀部分输出时,则必须⽤${}将变量括起来,否则shell将⽆法识别变量。$会将后⾯的所有字符当做变量的⼀部分,肯定是不到变量的[root@localhost ~]# myname='lsq'
[root@localhost ~]# echo $myname
lsq
[root@localhost ~]# echo ${myname}
lsq
[root@localhost ~]# echo hello${myname}boy
hellolsqboy
[root@localhost ~]# echo hello$mynameboy
hello
如果后⾯接的不是字符,也不是_下划线,则不需要{}来括起来。变量后接中⽂也是可以的。呵呵。
[root@localhost ~]# dir2=sbin
[root@localhost ~]# echo /usr/local/$dir2/config
/usr/local/sbin/config
$是去变量值的特殊字符,如果要显⽰$怎么操作,转义字符 \  或者⽤单引号括起来  '$i'
Bash除了echo之外,还提供了⼀个c类似的printf的语法。感觉这个东西有字符串格式化的意思。体会⼀下
%s  以字符串的形式显⽰变量值
[root@localhost ~]# printf "%s""$dir2"
sbin[root@localhost ~]# printf "%s\n""$dir2"
sbin                              #\n和c语⾔⼀样,都是换⾏的意思。
[root@localhost ~]#
[root@localhost ~]# SP='ABC 123 XYZ'
[root@localhost ~]# printf "%q\n""$SP"
ABC\ 123\ XYZ  #%q会将变量值中的特殊字符,⽤\字符转义,实例中就是在空格前加\
三取消与清空变量
unset 变量名
unset -v  变量名      -v 表⽰取消的是变量
unset -f 函数名  -f 表⽰取消的是函数
清空变量值
变量名=        跟unset的区别是,清空变量值,该变量还存在,只不过值变成空⽽已。unset则会将变量销毁
四变量和引号vim命令替换字符
双引号和单引号的区别
前边说过,变量赋值可以⽤单引号或者双引号,但是⼆者是有区别的
双引号相对于单引号可以有如下操作
1 替换变量例
[root@localhost shellscript]# vim test2.sh
#! /bin/bash
shopt -s -o nounset
myname="Bash shell"
#echo $myname
hello="hello ,i am $myname"
echo $hello
[root@localhost shellscript]# sh test2.sh
hello ,i am Bash shell    #将变量名myname⽤Bash shell 进⾏了替换
#但是如果我们⽤单引号
[root@localhost shellscript]# vim test2.sh
#! /bin/bash
shopt -s -o nounset
myname="Bash shell"
#echo $myname
#hello="hello ,i am $myname"
hello='hello ,i am ,$myname'
echo $hello
[root@localhost shellscript]# sh test2.sh
hello ,i am ,$myname  #看到了么?他不会替换,他会将变量名整体输出如果要在双引号中输出变量名⽽⾮替换,则需要⽤到\转义字符转义
2 替换命令执⾏结果
3 替换算数运算结果
四变量的有效范围
变量的有效范围就是当前所处的shell环境
如果要让变量在所有的shell都执⾏,那就需要将该变量设置成环境变量通过  export 命令就可以将变量设置成环境变量。
export testVar="hello world"
testVar="hello world"
export testVar
取消环境变量
testVar=
或者
unset testVar
五  Bash 的内置变量

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。