一、Shell变量分类
1、内部变量:由系统提供,用户只能使用不能修改
2、用户变量:由用户建立和修改,在shell脚本编写中会经常用到
3、环境变量:这些变量决定了用户工作的环境,它们不需要用户去定义,可以直接在shell中使用,
其中某些变量用户可以去修改
二、用户自定义变量
1、定义变量及变量赋值
varName=Value
export varValue=Value
2、引用变量 $VarName
- 一般地,所有的Shell变量都是字符串。
- “=”是赋值符号,两边不能直接跟空格,否则命令无效。
- 当变量的值仅仅包含数字时才允许进行数值计算。
- 在较新的bash 中,可是使用declare 或typeset 命令声明变量及其属性,但一般不需要声明。而且为了使脚本兼容于不同的shell,在没有必要的情况下尽量不使用变量声明。
三、引用
- 在bash 中,有些字符具有特殊含义,如果需要忽略这些字符的特殊含义,就必须使用引用技术。
- 引用可以通过下面三种方式实现:
1、 使用转义字符:\
2、 使用单引号:‘’
3、使用双引号:“” - 转义字符的引用方法就是直接在字符前加反斜杠。例:
\\$
,\‘,\“,\\,\,\!
四、强引用与弱引用
1、强引用
- 单引号对是强引用
- 单引号对中的字符都将作为普通字符,但不允许出现另外的单引号。
2、弱引用
- 双引号对是弱引用
- 双引号对中的部分字符仍保留特殊含义
①$(美元符号)-变量扩展
②`(反引号)-命令替换
③\(反斜线)-禁止单个字符扩展
④ !(叹号)-历史命令替换
举例:
①单引号对中的$字符被作为普通字符,因此不具有特殊功能了
②
③变量也可以存放命令,不过这里是存放命令执行后的结果,不是每次运行后都会生成新的结果
五、shell变量的作用域
1、局部变量的作用范围仅仅限制在其命令行所在的shell或shell脚本文件中
2、全局变量的作用范围则包括本Shell进程及其所有子进程
3、可以使用export
内置命令将局部变量设置为全局变量
4、可以使用export
内置命令将全局变量设置为局部变量
六、export命令
1、显示当前Shell可见的全局变量
export [-p]
2、定义变量值的同时声明为全局变量
export <变量名1=值1> [<变量名2=值2> ...]
3、声明已经赋值的某个(些)局部变量为全局变量
export <变量名1> [<变量名2> ...]
4、声明已经赋值的某个(些)全局变量为局部变量
export -n <变量名1> [<变量名2> ...]
5、Shell的子进程修改变量之后不会传给父Shell
七、Shell环境变量
1、环境变量定义Shell 的运行环境,保证Shell 命令的正确执行
2、Shell用环境变量来确定查找路径、注册目录、终端类型、终端名称、用户名等
3、所有环境变量都是全局变量(即可以传递给Shell 的子进程),并可以由用户重新设置
八、常见的Shell环境变量
九、Shell变量的查询、显示和取消
1、显示当前已经定义的所有变量
①所有环境变量:env
②所有变量和函数(包括环境变量):set
2、显示某(些)个变量的值
echo $NAME1 [$NAME2 ……]
3、取消变量的声明或赋值
unset<NAME>