变量的定义
变量即在程序运行过程中它的值是允许改变的量。变量是用一串固定的字符来标示不固定的值的一种方法。变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储 Script 运行时可更改的程序信息,在 shell 中变量是不能永久保存在系统中的,必须在文件中声明。
二、shell变量的分类
shell变量分为三类,分别为环境级变量,用户级变量,系统级变量;
(1)环境级变量只在当前shell中生效,shell关闭变量丢失,-------自定义变量
(2)用户级变量写在用户的骨文件中,只针对当前用户有效,
(3)系统级变量被写在系统的配置文件/etc/profile中
变量即在程序运行时保存在内存中。
硬盘永久,内存临时的。
1、自定义变量
两者赋值的方法
[root@test shell]# ip=`ifconfig eth0 |grep netmask |awk '{print $2}'`
解析:有同样效果的命令ip=$(ifconfig eth0 |grep netmask |awk '{print $2}')
[root@test shell]# echo $ip
10.10.10.5
[root@test shell]# ip=$(ifconfig eth0 |grep netmask |awk '{print $3}')
[root@test shell]# echo $ip
netmask
[root@test shell]# ip=$(ifconfig eth0 |grep netmask |awk '{print $3,$2}')
[root@test shell]# echo $ip
netmask 10.10.10.5
环境变量
env |less
echo $PATH
export JAVA_HOME=/usr/local/jdk
特殊变量
$$ Shell本身的PID(ProcessID)
$! Shell最后运行的后台Process的PID
$? 最后运行的命令的结束代码(返回值)
$- 使用Set命令设定的Flag一览
$* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$# 添加到Shell的参数个数
$0 Shell本身的文件名
$1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
[root@test shell]# echo $(($RANDOM%10000)) #10000内取余
9968
解析:$((...))结构的表达式是C风格的表达式,其返回的结果是表达式值,其中变量引用可不用‘$’(当然也可以)
unset 取消变量
[root@test ~]# echo $a
1
[root@test ~]# unset a
[root@test ~]# echo $a
[root@test ~]#