变量详解

313 阅读1分钟

本地变量:

作用域为整个bash进程

局部变量:

作用域为当前代码段

环境变量:

作用域为当前shell进程及其子进程
set export 变量名                                 定义一个变量,set可以省略

变量名称:

1、只能包含字母、数字和下划线,并且不能数字开头
2、不应该跟系统中已有的环境变量重名
3、最好做到见名知义

位置变量:

$1, $2,...		$1表示第一个参数,$2表示第二个参数...
shift			剔除变量

变量替换:

a=123456456789
echo ${a:2}     显示结果:3456456789       从第二个数字开始显示
echo ${a:2:4}   显示结果:3456             从第二个数字开始,显示4个数字
echo ${a#123}   显示结果:456456789        删除头部数字,#后面跟要删除的头部数字
echo ${a#*6}    显示结果:456789           
echo ${a##*6}   显示结果:789
echo ${a%6*}    显示结果:12345645
echo ${a%%6*}   显示结果:12345
变量替换不改变变量的值

特殊变量:

$?                               上一个命令的执行状态返回值
  程序执行,可能有两类返回值
      程序执行结果
      程序状态返回代码(0-255)
          0:正确执行
          1-255:错误执行,1,2,127系统预留
$#                                是传给脚本的参数个数
$0                                是读取脚本名的路径及文件名
$1                                是传递给该shell脚本的第一个参数
$2                                是传递给该shell脚本的第二个参数
$@                                是传给脚本的所有参数的列表
$*                                是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$                                是脚本运行的当前进程ID号
$?                                是显示最后命令的退出状态,0表示没有错误,其他表示有错误
basename $0		          提取脚本的名字
unset 变量名                       撤销变量
set                               查看当前shell中的变量
printenvenvexport              查看当前shell中的环境变量
变量名1=$变量名1:(路径或字符)      在变量1中增加括号里的内容