Linux培训教程:shell变量的应用
Linux培训教程:shell变量的应用
一:用户自定义变量
1.定义新变量
变量名=变量值
例:新建一个名为"DAY变量,初始内容设置为“Sunday"
[root@localhost ~] # DAY=Sunday
2.查看和引用变量值
[root@localhost ~] # echo $DAY (echo输出要加$符号)
例:在变量DAY的内容后紧跟"MorningBus"
[root@localhost ~] # echo ${DAY}MorningBus (方便区分要将变量括起来)
3.为变量赋值的常用方法
双引号(")、引号中可以引用变量
例:确认变量DAY的内容,并使用双引号TODAY变量赋值“Today is $DAY”
[root@localhost ~] # TODAY="Today is $DAY"
单引号(')、引号中不允许引用变量,所有字符都将作为普通字符
例:确认变量DAY的内容,并使用单引号TODAY变量赋值“Today is $DAY”
[root@localhost ~] # TODAY='Today is $DAY'
[root@localhost ~] # echo $TODAY
Today is $DAY (输出结果没有被引用)
反撇号(`)、反撇号中只能存在命令
例:统计当前登录到本地终端(tty1-tty6)中的用户数量,并将结果保存到变量UserNum中
[root@localhost ~] # UserNum=`w | grep "tty" | wc -l`
read命令、可以实现简单的交互操作,以空格作为分隔符
例:从键盘输入一整行数据、依次赋给G1、G2,并确认G1、G2变量的内容
[root@localhost ~] # read G1 G2
Good morning , teacher (键盘输入)
[root@localhost ~] # echo $G1 (查询)
Good
[root@localhost ~] # echo $G2
moring , teacher
设置变量的作用范围、默认情况下用户自定义的变量只能在当前的shell环境中执行,称为局部变量、转换为全局变量之后可以再其他shell环境中使用
exprot命令可以转换
[root@localhost ~] # export DAY
清除自定义变量(unset命令)
例:清除已设置的变量DAY、MONTH、YEAR
[root@localhost ~] # unset DAY MONTH YEAR
数值变量的运算
一般只适合进行简单的整数运算
expr 变量1 运算符 变量2
运算符:+ 、- 、\* (乘)、/ 、%(求模,即余数)
例:设置变量X、Y的值分别为22、33,依次计算变量X、Y的加减乘除及取模的运算结果
[root@localhost ~] # X=22
[root@localhost ~] # Y=33
[root@localhost ~] # expr $X + $Y
[root@localhost ~] # expr $X - $Y
[root@localhost ~] # expr $X\* $Y
[root@localhost ~] # expr $X / $Y
[root@localhost ~] # expr $X % $Y
例:计算变量X的值与数值123的和,并将计算结果重新赋值给X
[root@localhost ~] # echo $X
22
[root@localhost ~] # X=`expr $X + 123`
[root@localhost ~] # echo $X
145
二:环境变量
用户登录后Linux系统预先设定好的一类shell变量,功能是设置用户的shell工作环境
查看环境变量
[root@localhost ~] # set | less
例:确认当前的命令搜索路径,将/opt/bin目录添加到现有的搜索路径中去
[root@localhost ~] # echo $PATH
[root@localhost ~] # PATH="/opt/bin:$PATH"
例:编辑“~/.bash_profile”文件,修改PATH的设置,以便用户下次登录后能使用/opt/bin目录作为默认搜索路径
[root@localhost ~] # vi ~/.bash_profile
PATH=$PATH:HOME/bin:/opt/bin
export PATH
三:位置变量
为了方便通过命令行给程序提供操作参数,引入了位置变量!shell命令执行时,除了输入第一个字段外,其余字符串按照从左到右顺序依次赋值给位置变量
例:执行“service network restart”命令时,service脚本程序的第一个位置参数用$1表示,对应的值为"network",第二个位置参数用$2表示,对应的值为restart
四:预定义变量
$#:表示命令行中位置参数的数量
$*:表示所有位置参数的内容
$?:表示命令执行后的状态,检查命令执行是否正确!为0正确,其他错误
$$:表示当前进程的进程号
$!:表示后台运行的最后一个进程的进程号
$0:表示当前执行的进程的进程名
精华阅读