1.1 定义变量
值可变的量,称为变量
环境变量的名称:见名知其意(看到的他知道是干啥的)
变量名=变量值,常说的变量,一般是变量名
字母数字下划线,不能是数字开头
1.2 环境变量和普通变量
1.2.1 环境变量(全局变量)
- Ø 可在创建他们的shell以及派生出来的任意子shell中使用
- Ø 环境变量包括内置的环境变量和自定义的环境变量,且通常为大写。
- Ø 环境变量的定义方式:
declare -x 变量名=value
export 变量名=value
- Ø 环境变量有四个文件,他们的执行顺序如下图所示:

- Ø 登陆shell会加载所有的环境变量
- Ø 非登陆shell可能会加载~/.bashrc或者/etc/bashrc(上图非绿色部分),然而有些定时任务以上两个根本不会加载,所以需要手动指定,建议在定义变量时定义到/etc/bashrc
- Ø 可以在环境变量文件中定义普通变量
1.2.2 普通变量
- Ø 普通变量只有在当前shell下才能使用
- Ø 定义方式
1.适用于一般场景,不适用于带有空格等字符
变量名=value
2.所见即所得的定义方式
变量名=’value’
3.解析双引号之内的变量
变量名=”value”
Ø 注意点:(举例说明)
1. 变量如果后面有内容,一定要把变量括{}起来
2. 希望变量内容原样输出则加单引号
3. 希望获取变量中的命令执行结果用``或者$()
定义变量的方式
1、定义环境变量的方式:
export 变量名=变量值
2、定义普通变量的方式:
变量名=变量值
3、定义变量的三种方式
1-适用于一般场景,不适用于带有空格等字符
[export] 变量名=value
2-所见即所得的定义方式
[export] 变量名=’value’
3-解析双引号之内的变量
[export] 变量名=”value”
4、环境变量文件的加载顺序
/etc/profile ===> ~/.bash_profile ===> ~/.bashrc ===> /etc/bashrc
5、非登录式(ssh)的shell只加载后两个
1.3 临时变量和永久变量(了解)
如果按照变量的生存周期来划分的话,Linux变量可以分为两类:
- Ø 永久变量:需要修改变量配置文件,使得变量永久生效
- Ø 临时变量,使用export命令或者直接在当前shell中赋值的变量
1.4 shell特殊变量
1.4.1 参数特殊变量
特殊变量 | 作用已经说明 |
---|---|
$0 | 获取当前执行shell脚本文件名,如果执行脚本带路径,则包括完整路径 |
$n | 获取当前执行shell脚本的第n个参数值,若n>9,则用大括号包裹,如${10} |
$# | 传递到脚本的参数个数 |
$* | 以一个单字符串显示所有向脚本传递的参数 |
$@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
1.4.2 进程特殊变量
特殊变量 | 作用已经说明 |
---|---|
$? | 显示最后命令的退出状态。0表示没有错误,非0表明有错误。此变量最常用 |
$$ | 显示脚本运行的当前进程ID号,此变量不常用,了解即可 |
$! | 后台运行的最后一个进程的ID号,此变量不常用,了解即可 |
$_ | 之前运行脚本的最后一个参数,此变量最不常用,了解即可 |
1.5 shell变量子串
表达式 | 作用说明 |
---|---|
${param} | 返回变量$param内容 |
${#param} | 返回变量$param内容的字符长度,也适合特殊变量,此表达式最常用 |
${param:offset} | 在变量$param中,从位置offset之后开始提取子串到结尾 |
${param:offset:length} | 在变量$param中,从位置offset之后开始提取长度为length的子串 |
${param#word} | 在变量$param开头删除最短匹配的word子串 |
${param##word} | 在变量$param开头删除最长匹配的word子串 |
${param%word} | 在变量$param结尾删除最短匹配的word子串 |
${param%%word} | 在变量$param结尾删除最长匹配的word子串 |
${param/pattern/string} | 将变量$param中符合pattern的第一个内容用string取代 |
${param//pattern/string} | 将变量$param中符合pattern的所有内容用string取代 |
网友评论