目录
2、位置变量(命令行变量)
定义变量: 变量名=value
读取变量内容:$变量名 或者 ${变量名}
删除变量: unset 变量名
变量命名:
- // variable.sh
- NAME='gzx'
- AGE=17
-
- echo name: $NAME and age: $AGE
-
- unset NAME
测试脚本的时候,需要给脚本添加运行权限,如果你是这个.sh文件的创建者,在命令行输入下面两者中的一种
- # 如果是可以创建者、组、其他都加上执行权限
- chmod a+x variable.sh
-
- # 如果只是给创建者加上执行权限
- chmod u+x variable.sh
测试结果如下:
![]()
注意:使用变量时的本质是替换,可以拼接其他内容,比如
- DIR=~/workspace/dist
-
- rm -rf $DIR/test
位置变量不需要显式去定义变量名,其实是根据命令行参数的位置来读取对应的内容的。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'