掌握Shell变量替换以及变量作用域(学会使用 export 改变局部变量或全局变量)
时间: 2023-12-28 12:06:21 浏览: 109
Shell变量替换是指在命令行中使用特殊的字符来引用变量的值或者对变量进行操作。常见的变量替换有:
- `$variable`:用于引用变量的值。
- `${variable}`:用于引用变量的值,并且可以在变量名和花括号之间添加一些修饰符来对变量进行操作。
- `${variable:-default}`:如果变量没有被设置或者为空,则使用默认值。
- `${variable:=default}`:如果变量没有被设置或者为空,则使用默认值,并且将默认值赋值给变量。
- `${variable:+value}`:如果变量被设置,则返回指定的值,否则返回空字符串。
- `${variable:?message}`:如果变量没有被设置或者为空,则输出错误信息并退出。
变量作用域指的是变量的可见范围。在Shell中,变量可以分为局部变量和全局变量。
- 局部变量:只在当前Shell进程中有效,对子进程不可见。可以使用`local`关键字定义局部变量。
- 全局变量:在当前Shell进程及其所有子进程中都有效。可以使用`export`关键字将局部变量转换为全局变量。
使用`export`命令可以将局部变量转换为全局变量,例如:
```
# 定义局部变量
my_var="hello"
# 将局部变量转换为全局变量
export my_var
# 在子进程中也可以访问全局变量
sh -c 'echo $my_var'
```
需要注意的是,`export`只会将当前Shell进程中的变量转换为全局变量,对于已经存在的子进程不会生效。如果希望在新的子进程中使用全局变量,可以在调用子进程时使用`env`命令,例如:
```
# 在子进程中也可以访问全局变量
env my_var="$my_var" sh -c 'echo $my_var'
```
阅读全文
相关推荐


















