五 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会将变量值中的特殊字符,用\字符转义,实例中就是在空格前加\

猜你喜欢

转载自www.cnblogs.com/Lonelychampion/p/11648480.html