环境变量
shell中的命令是用来操作数据的,对数据进行增删改查
变量用于存储管理临时的数据,这些数据都是在运行内存中的
变量类型:系统环境变量、自定义变量、特殊符号变量
系统环境变量:是系统提供的共享变量,是linux系统加载shell的配置文件中定义的变量共享给所有的shell程序使用
环境变量分类
系统级环境变量:shell环境加载全局配置文件中的变量共享给所有用户所有shell程序使用,全局共享
用户级环境变量:shell环境加载个人配置文件中的变量共享给当前用户的shell程序使用,登录用户使用
使用env命令来查看当前系统环境变量
使用set命令来查看所有变量
自定义变量
分类:
- 自定义局部变量:定义在一个脚本文件中,只能在这个脚本文件中使用的变量
- 自定义常量:赋值后不可以修改,也叫只读变量
- 自定义全局变量:在当前脚本文件中定义全局变量,这个全局变量可以在当前shell环境和子shell环境中都可以使用
自定义变量
var_name=value
规格:
- 变量名称可以有字母、数字和下划线组成,但是不能以数字开头
- 等号两侧不能有空格
- 在bash环境中,变量的默认类型都是字符串类型
- 变量的值如果有空格,必须使用双引号括起来
- 不能使用关键字
查询变量值语法:
# 直接使用变量名查询
$var_name
# 使用花括号,适合拼接字符串
${var_name}
变量删除:
unset var_name
常量
定义语法
readonly var_name
全局变量
父子shell环境介绍:有两个脚本文件 A.sh和B.sh
如果在A文件中执行了B文件,那么A.sh就是父shell环境,B就是子shell环境
语法
export var_name1=value
特殊符号变量
$n:用于接收脚本文件执行时传入的参数
$0:用于获取当前脚本文件名称
$1~$9,代表获取的第一个到第九个输入参数
第10个参数以上获取参数的格式为:${数字}
执行脚本文件传入参数语法:
sh 脚本文件 输入参数1 输入参数2 ...
$#:获取所有输入参数的个数
使用${#}来拼接字符串
$*:获取所有输入参数,用于以后输出所有参数。使用双引号括起来,获得的所有参数为一个字符串,是整体
$@:获取所有输入参数,用于以后输出所有参数。使用双引号,获取的是一组参数列表对象。格式为:”$1“ ”$2“ ”$3“
1.不适用双引号括起来,功能一样
2.使用双引号括起来,不一样。使用循环打印所有输入参数可以看出区别
# 直接输出
echo '使用$*直接输出:'$*
echo ‘使用$@直接输出:'$@
# 循环输出
echo '循环遍历输出$*所有参数'
for item in $*
do
cheo $item
done
echo '循环遍历输出$@所有参数'
for item in $@
do
cheo $item
done
$?:获取上一个shell命令的退出状态码,或者是函数的返回值
每个shell命令的执行都有一个返回值,用于说明命令执行是否成功
一般来说,返回0表示成功,非零表示失败
$$:用于获取当前shell环境的进程ID号