1.本地变量
本地变量的格式是VAR_NAME=VALUE,一般用于在shelI脚本中定义一些临时变量,只对当前shel进程有效,关闭shell进程之后就消失了,对当前shell进程的子进程和其它shell进程无效。
2.环境变量
它的格式为: export VAR_NAME=VALUE它的格式是在本地变量格式的基础上添加一个export参数。
环境变量的这种格式主要用于设置临时环境变量,当你关闭当前shell进程之后环境变量就消失了,还有就是对子shell进程有效,对其它shel进程无效
注意,环境变量的生效范围和本地变量是不一样的,环境变量对子shell进程是有效的。
- 如果想永久生效,需要添加到/etc/profile文件中 并且source /etc/profile
3.位置变量
在进行shell编程的时候,有时候我们想给shell脚本动态的传递一些参数,这个时候就需要用到位置变量,类似于$0 $1 $2这样的,$后面的数字理论上没有什么限制。
它的格式是: location.sh abc xyz
位置变量其实相当于java中main函数的args参数,可以在shell脚本中动态获取外部参数
这样就可以根据外部传的参数动态执行不同的业务逻辑了。
- $0 获取当前执行的shell脚本的文件名,包括路径
- $n 获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的文件名,如果n大于9,用大括号括起来${10}
- $* 获取当前shell的所有参数,将所有的命令行参数视为单个字符串,相当于”$1$2$3”……..注意与$#的区别
- $# 获取当前shell命令行中的参数的总个数
$@ 这个程序的所有参数”$1” “$2” “$3” “…..”,这是将参数传递给其他程序的最佳方式,因为他会保留所有内嵌在每个参数里的任何空白。
4.特殊变量
$?
它表示是上一条命令的返回状态码,状态码在0~255之间。如果命令执行成功,这个返回状态码是0,如果失败,则是在1 ~255之间,不同的状态码代表着不同的错误信息。
0 命令成功结束
- 1 通用未知错误
- 127 没找到命令
- 128 无效退出参数
- 128+x Linux信号x的严重错误
- 130 命令通过Ctrl+C控制码越界
- 255 退出码越界
$
它表示的是shell脚本所有参数的个数。
这个特殊变量的应用场景是这样的,假设我们的脚本在运行的时候需要从外面动态获取三个参数,那么在执行脚本之前就需要先判断一下脚本后面有没有指定三个参数, 如果就指定了1个参数,那这个脚本就没有必要执行了,直接停止就可以了,参数个数都不够,执行是没有意义的。
引号


