一、本地变量 --本地变量是在用户现有的shell生命周期的脚本中使用 --本地变量详解:用户通过终端登录服务器,服务器会创建一个会话期并且启动一个shell程序,用户每登录一次, 就会启动一个shell,所以在一个会话期里可能会启动多个shell程序 当用户在shell程序中定义了一个shell变量,该shell变量的生存周期是用户连接到服务器到用户关闭shell 用户关闭shell可以有两种方法,①切换用户(切换用户时,会关闭当前用户的shell,再次启动另一个shell) ②关闭终端 --variablename=value 定义本地变量:MYVAR="test" 注意"="左右不要有空格,变量的值必须加上双引号,数字可以例外 使用本地变量$MYVAR 用法:echo $MYVAR 或者 echo ${MYVAR} --set显示本地所有的变量 --readonly variablename定义只读变量 只读变量不能赋值
二、环境变量 --环境变量用于所有用户进程(经常成为子进程)。登录进程称为父进程。shell中执行的用户进程均为子进程。
不像本地变量(只用于现在的 shell),环境变量可用于所有子进程,这包括编辑器、脚本和应用程序。 --$HOME/.bash_profile(/etc/profile,所有用户都使用profile) --export 声明环境变量 export myvar="ttt" --env 查看环境变量
三、变量替换(显示变量) --用变量的值替换它的名字 --在变量前加$,使用echo命令可以显示单个变量的值 --echo ${MYVAR} 或者 echo $MYVAR --${variablename} 显示实际值 --${variablename:+value} 若设置了variablename则显示用户自定义信息value;若未设置variablename,则显示空 --${variablename:?value} 若设置了variablename则显示variablename的值;若未设置variablename,则显示用户自定义信息value(相 当于一种提示信息) --${variablename:-value} 结果同上 --${variablename:=value} 若设置了variablename则显示variablename的值;若未设置variablename,则设置variablename的值为用户 自定义信息value,并且显示variablename的值
四、unset --清除变量 --unset testvar --readonly变量不能被清除
五、位置变量 --$1 --详情见 Linux Shell编程一
六、标准变量 --bash默认建立了一些标准环境变量,可在/etc/profile中定于 --HOME 属主目录 --LOGNAME 登录用户名 --TERM 登录服务器,终端类型vt100 --PATH 标准变量 --PS1(数字1) 提示符 echo $PS1 打印[u@h W]$ u代表用户名 h代表主机名 w代表当前目录 例如:[test@HP-Linux 1]$ --PS2 ">" 表示一条命令没有写完,自动换行后,shell提示符,""是续行符 例子:ls -lt > | wc -w
七、特殊变量 --$# 传递脚本的参数个数(不包含程序本身./runc,这和c语言不同) --$* 所有的参数列表,次选项参数可以超过9个 --$$ 脚本运行的当前进程ID号 --$| 后台运行的最后一个进程的进程ID号 --$@ 与$#相同,但是使用时加引号,并爱引号中返回每个参数 --$- 显示shell使用的当前选项,与set命令功能相同 --$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误
八、影响变量的命令 --declare 设置或显示变量 -f 只显示函数名 -r 创建只读变量 -x 创建转出变量 -l 创建整数变量 --shife [n] 整体参数左移n个