在运行Bash时,会同时存在三种变量分别为局部变量、环境变量和内部变量。
## 1.局部变量
局部变量在脚本或命令中定义,仅在当前Bash实例中有效,其他Bash启动的程序不能访问局部变量。关于Bash变量:
* Bash脚本中定义的变量是global的,其作用域从被定义的地方开始,到Bash结束或被显示删除的地方为止。
* Bash函数定义的变量默认是global的,其作用域从“函数被调用时执行变量定义的地方”开始,到Bash结束或被显示删,函数定义的变量可以被显示定义成local的,其作用域局限于函数内。但请注意,函数的参数是local的。
* 如果同名,Bash函数定义的local变量会屏蔽脚本定义的global变量。
局部变量的关键字为"local",以下为局部变量案例。
```
#!/bin/bash
function hello()
{
local text="Hello World!!!" # 定义局部变量
echo $text
}
hello
echo $text # 可以试着去掉函数中的local,再执行本脚本的效果
```
## 2.环境变量
所有的程序包括Bash启动的程序都能访问环境变量,有些程序需要环境变量来保证其正常运行。在Bash中可以通过以下三个命令来查看环境变量,他们区别在于:
* set 用来显示本地变量
* env 用来显示环境变量
* export -p 用来显示和设置环境变量
**(注:变量和环境变量的区别是:变量不能被子进程继承,而环境变量会被子进程继承。)**
我们还可以通过以下两个文件来设置环境变量:
* /etc/profile
* ~./.bash\_profile
## 3.内部变量
内部变量是Bash程序设置的特殊变量。Bash变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了Bash的正常运行,以下包含Bash的。
| **内部变量** | **解释** |
| :--- | :--- |
| $BASH\_VERSION | Bash版本 |
| $HOSTNAME | hostname |
| $HOME | 宿主目录(家目录) |
| $PATH | 环境变量 |
| $RANDOM | 随机整数 |
- Introduction
- 1.Shell编程基础
- 什么是Shell
- 编写第一个Bash程序
- 2.变量
- 什么是变量
- 变量四种赋值方式
- 指定变量类型
- 变量的类型
- 特殊变量
- 3.Bash符号相关
- Bash符号相关
- 特殊符号
- 数学运算符号
- 4.内建命令与外部命令
- 内建命令与外部命令
- 5.read命令
- read命令
- 6.条件语句
- if..then..fi
- if..then..else..fi
- if..then..elif..fi
- 空命令
- 文件测试符
- 字符串判断、与、或和非
- []与[[]]符号
- 7.Bash循环 && 分支语句
- while循环语句
- for循环
- for..in循环
- until循环
- select循环
- case分支语句
- 8.正则表达式
- 正则表达式
- 9.子Shell和受限Shell
- 子Shell
- 受限Shell
- 10.函数与函数的加载
- 函数语法与案例
- 递归函数
- 函数的加载
- 11.Bash脚本风格
- Bash脚本风格
- 12.Bash脚本调试
- Bash脚本调试
- 13.sed && awk
- sed
- 14.awk
- awk
- 15 Bash杂项 && 案例
- while循环的陷阱
- Bash的生命周期
- IO重定向
- /bin/bash和/bin/sh区别
- 命令杂项
- Shell加密
- 16.10.2.案例
- Bash版回收站
- 17.Bash中文速查表
- 中文速查表