一、环境变量
1.自定义环境变量
export 变量名=value
declare -x 变量名=value
变量名=value; export 变量名
2.环境变量初始化
/etc/profile –> ~/.bash_profile –> ~/.bashrc –> /etc/bashrc (系统登录)
~/.bashrc –> /etc/bashrc (远程登录)
二、普通变量
不加引号 : aa=pwd (不含空格,弱引用)
单引号: aa=’pwd’ (强引用)
双引号: aa=”pwd” (弱引用)
反引号: aa=`pwd` (先运行,类似$(pwd))
三、特殊变量
1.特殊位置变量
| 变量 | 说明 |
|---|---|
| $0 | 当前脚本文件名,有路径则包含路径 |
| $n | 第n个参数,n>9则为${n} |
| $# | 参数个数 |
| $* | 加双引号为 “$1 $2 $3 … “ |
| $@ | 加双引号为 “$1” “$2” “$3” “…” |
2.特殊状态变量
| 变量 | 说明 |
|---|---|
| $? | 上一条指令的状态返回值,为0成功,非0失败 |
| $$ | 当前脚本PID |
| $! | 上一个后台进程的PID |
| $_ | 上一条命令或脚本的最后一个参数 |
3.变量子串
| 表达式 | 说明 |
|---|---|
| ${var} | 返回$var的内容 |
| ${#var} | 返回$var的长度(按字符),也适用于特殊变量 |
| ${var:offset} | 返回$var从offset到结尾的子串 |
| ${var:offset:length} | 返回$var从offset开始length长度的子串 |
| ${var#word} | 返回从$var开头开始删除最短匹配的word子串 |
| ${var##word} | 返回从$var开头开始删除最长匹配的word子串 |
| ${var%word} | 返回从$var结尾开始删除最短匹配的word子串 |
| ${var%%word} | 返回从$var结尾开始删除最长匹配的word子串 |
| ${var/pattern/string} | 返回string代替第一个pattern后的子串 |
| ${var//pattern/string} | 返回string代替所有pattern后的子串 |
4.特殊扩展变量
说明: 表达式中’:’可选,表示为空
| 表达式 | 说明 |
|---|---|
| ${var:-word} | 变量未定义返回word,否则返回$var |
| ${var:=word} | 变量未定义返回word且$var=word,否则返回$var |
| ${var:?word} | 变量未定义将word作标准错误返回,否则返回$var |
| ${var:+word} | 变量未定义什么也不做,否则返回$var=word |
本文详细介绍了Shell脚本中的各种变量类型,包括环境变量、普通变量和特殊变量。环境变量部分讲解了自定义及初始化方法;普通变量则区分了不同引用方式的特点;特殊变量涉及位置、状态等实用场景,并对变量子串及特殊扩展变量进行了说明。

被折叠的 条评论
为什么被折叠?



