shell中不会区分变量的类型,分为环境变量和普通变量。
shell中比较重要的变量:
- $0 :获取当前shell脚本的文件名,如果执行包含了路径, 则包含路径,通过$0可以获取当前执行路径,
dirname $0
- $1 —$n : 获取当前Shell脚本执行时底n个参数值,$1,$2,…$9,如果n大于9,则用大括号括起来,如${12},接的参数用空格隔开
- $# :获取当前Shell脚本执行时,参数的总个数。
- $*:获取当前Shell脚本所有传参的参数,不加引号和 @ 相 同 , 如 果 给 @相同,如果给 @相同,如果给加上引号 “ $ ”,则表示将所有的参数都视为字符串,相当于“$1 $2 $3”
- $@:获取当前Shell脚本所有传参的参数,不加引号和$*相同,加引号相当于将所有的参数视为独立的字符串,如:“$@” 相当于“$” ,”$1” , ”$2” , ”$3”这是将多参数传给其他程序的最好的方式。当$*和$@都加双引号时两者是有区别的,当不加时,两者是无区别的
- $? :获取上一条命令的执行状态的返回值(0为成功,非零为失败)
- $$:获取当前执行的Shell脚本的进程号
- $!:获取上一个在后台工作的进程号
- $_:获取在此之前执行的的命令或脚本的最后一个参数
变量子串,截取:
- ${param} : 返回变量$param的内容
- ${#param}:返回变量$param的长度
- ${param:offset}:从变量$param的offset开始提取子串到结尾处\
- ${param:offset:length}:从变量$param的offset开始提取长度为length的子串
- ${#param:-word}:如果变量为空或未赋值,那么返回备用的word
- ${#param:=word}:如果变量为空或为负值,返回备用的word并将param设置为word