目录
1、用户自定义变量
2、位置变量
3、预定义变量
4、环境变量(一次性全局变量)
5、永久全局变量(重启以后依然存在的变量)
(1) 本地变量文件
(2) 全局变量文件
定义变量: 变量名=value
读取变量内容:$变量名 或者 ${变量名}
删除变量: unset 变量名
变量命名:
// variable.sh
NAME='gzx'
AGE=17echo name: $NAME and age: $AGEunset NAME
测试脚本的时候,需要给脚本添加运行权限,如果你是这个.sh文件的创建者,在命令行输入下面两者中的一种
# 如果是可以创建者、组、其他都加上执行权限
chmod a+x variable.sh# 如果只是给创建者加上执行权限
chmod u+x variable.sh
测试结果如下:
位置变量不需要显式去定义变量名,其实是根据命令行参数的位置来读取对应的内容的。Shell脚本的内容如下:
# 打印两个命令行参数的内容
# $1 表示引用命令行参数的第一个参数
# $2 表示引用命令行参数的第二个参数
echo first param: $1 and second param: $2
命令行输入如下:
./variable.sh gzx 17
预定义变量指的是系统已经内置了一些变量,我们只需要直接使用 $符号来引用。常见预定义变量的引用如下:
# variable.sh
echo '脚本名:'$0
echo '参数的个数:'$#
echo '当前进程的PID:'$$
echo '上一个命令的返回值:'$?# 命令行输入
linux@linux:~/Templates$ ./variable.sh aaa bbb
脚本名:./variable.sh
参数的个数:2
当前进程的PID:3436
上一个命令的返回值:0
环境变量在父Shell中可以被使用,在子Shell中也可以被使用(子Shell会拷贝父Shell的环境)。需要注意的是,环境变量仅仅只是本次登录有效,重启以后,环境变量会消失。
下面来测试一下环境变量是否在任何地方都可以被使用,首先在家目录下添加一个环境变量
linux@linux:~$ export NAME='gzx'
然后换一个目录,在命令行打印环境变量
linux@linux:~/Templates$ echo $NAME
gzx
修改 之前的.sh脚本来打印环境变量
# variable.sh
echo $NAME# 命令行输入
linux@linux:~/Templates$ ./variable.sh
gzx
Linux环境下的变量类型大致有三种,分别是本地变量、全局变量以及用户自定义的变量
当变量直接写入本地变量文件或者全局变量文件的时候,此时即便是重启虚拟机,这个变量也会一直存在。下面介绍一下本地变量和全局变量的写入方式
向 家目录下的 .bashrc 中写入一个变量NAME
# .bashrc 文件
NAME='gzx'
向 /etc/profile 文件中写入一个变量NAME
# .bashrc 文件
export NAME='gzx'