变量
又分为环境变量和自定义变量
环境变量
使用 env 命令查看
1 | [api@kfxqtyglpt ~]$ env |
环境变量通常用全大写的形式
自定义变量
1 | [api@kfxqtyglpt ~]$ myname=nanhai13 |
注意
- 变量未设定之前是空的
- 等号两边不能有空格
查看变量
1 | [api@kfxqtyglpt ~]$ echo $myname |
推荐使用${}方式
特殊情况处理
数据内容有空格
用单引号或者双引号括起来
或者用转移字符\把空格转义了
1
2
3
4
5
6
7
8
9[api@kfxqtyglpt ~]$ myname="nanhai 13"
[api@kfxqtyglpt ~]$ echo ${myname}
nanhai 13
[api@kfxqtyglpt ~]$ myname='nanhai 14'
[api@kfxqtyglpt ~]$ echo ${myname}
nanhai 14
[api@kfxqtyglpt ~]$ myname=nanhai\ 15
[api@kfxqtyglpt ~]$ echo ${myname}
nanhai 15数据内容中引用其他变量
用双引号括起。不能用单引号
1
2
3[api@kfxqtyglpt ~]$ hello="hi ${myname}"
[api@kfxqtyglpt ~]$ echo $hello
hi nanhai 15如果用单引号
1
2
3[api@kfxqtyglpt ~]$ hello='hi ${myname}'
[api@kfxqtyglpt ~]$ echo $hello
hi ${myname}可以看出单引号和双引号的区别了
数据内容中执行其他命令
使用$()可以执行命令
1
2
3[api@kfxqtyglpt ~]$ myversion=$(uname -r)
[api@kfxqtyglpt ~]$ echo $myversion
2.6.32-431.el6.x86_64
查看自定义变量
使用set命令。可以查看所有环境变量和自定义变量
删除自定义变量
unset命令
其他
$本身也是个变量
1 | [api@kfxqtyglpt ~]$ echo $$ |
$$显示当前shell的pid
?是上一个命令的结果
一般命令执行后都会回传一个执行结果。
执行成功一般回传0,如果执行出错,会回传错误码。
1 | [api@kfxqtyglpt ~]$ echo $? |
将自定义变量导出为环境变量
使用export命令,注意没有$符号
1 | [api@kfxqtyglpt ~]$ export myname |
使用env查看
1 | [api@kfxqtyglpt ~]$ env |
我们登入linux,取得一个bash命令窗口,就是开启了一个bash程序,这个bash有自己的pid
在这个shell下执行的所有命令都是这个shell程序的子程序
子程序会继承父程序的环境变量,但是不会继承父程序的自定义变量
1 | [api@kfxqtyglpt ~]$ name=superman |
读取输入值
编写shell脚本时经常会用到需要获取用户输入的功能。这就需要read命令
1 | [api@kfxqtyglpt ~]$ read name |
read直接加变量名即可
参数-p可以加说明,-t是等待时间
声明变量的类型
默认定义的变量都是字符串类型,所以
1 | [api@kfxqtyglpt ~]$ sum=10+20 |
声明变量类型使用declare命令,参数
-a数组类型
-i整数类型
-x导出为环境变量
-r只读类型
1 | [api@kfxqtyglpt ~]$ unset sum |
数组
直接使用中括号来定义即可,使用时需要用${}
1 | [api@kfxqtyglpt ~]$ arr[0]=aa |