首页 > 数据库 > 数据库开发技术 > 三分钟让你掌握shell变量
bash变量类型
本地变量
局部变量
环境变量
位置变量
内置变量
注意: 对变量进行赋值的时候“=” 两边不能有空格,否则会异常
[root@cvm-172_16_20_121 ~]# bash 1.sh21.sh: line 3: 3: command not found1.sh: line 5: c: command not found[root@cvm-172_16_20_121 ~]# cat 1.sha=2echo $ab= 3echo $bc =4echo $c[root@cvm-172_16_20_121 ~]#

本地变量
作用域是整个bash进程都可以使用
命名规范:
只能含字母、数字和下划线,并且以字母和下划线开头。
最好不要跟系统已有的环境变量重名
变量名可充分体现这个变量的作用

局部变量
声明局部变量使用‘local’ 指令。局部变量作用于只在作用范围内生效
[root@cvm-172_16_20_121 ~]# bash 1.sh1.sh: line 4: local: can only be used in a function1.sh: line 4: local: can only be used in a function[root@cvm-172_16_20_121 ~]# vim 1.sh[root@cvm-172_16_20_121 ~]# cat 1.shfor i in {0..1};dolocal a=1echo $adoneecho $a[root@cvm-172_16_20_121 ~]#

环境变量
环境变量的作用域是当前shell的主进程和其子进程,不能影响到其父进程,也不会有影响到其他主进程,声明环境变量使用export
export var_name=value如果变量已经定义,可以只使用变量名 export var_name,即可用下面两种方式声明环境变量:
export var_name=value
var_name=value
export var_name脚本在执行命令时会启动一个子shell环境变量系统自动执行的脚本(非命令行启动)就需要自我定义需要的环境变量(/etc/profile 或者 ~/.bashrc)

位置变量
对参数位置做精准匹配的变量,一般做为脚本入参或者出参设置的时候使用
$1,$2,$3,……cat first.sh test.txt hello$1: first.sh$2: test.txt$3: hello
shift:踢掉参数
shift n:踢掉n个参数,默认踢掉一个参数
注意:$0为调用该脚本的名字,而参数如果作为变量,第10个变量不能直接写$10,而需要写成${10}

特殊变量
$?:上一个命令执行状态的返回值:程序执行可能有两种返回值:
程序执行结果
程序状态返回吗(0-255)
0 则为执行正确
1-255 则执行出错(1,2,127系统预留)
可以自定义返回值来获取不同的错误状态
$#:获取当前shell命令行中参数的总个数
$*:获取当前shell的所有参数 “$1 $2 $3 …,受IFS控制
$@:这个程序的所有参数 “$1″ “$2″ “$3″ “…”,不受IFS控制
$0 获取当前执行的shell脚本的文件名
$n 获取当前执行的shell脚本的第n个参数值,n=1..9
$$ 获取当前shell的进程号(PID)
$! 执行上一个指令的PID
END

添加博主
微信号|yfq940-
点个关注!!!
原文作者:步步运维步步坑;如有侵权,请联系管理员删除。