1.全局变量
shell 全局变量,顾名思义 就是大家都能用的 ,全局变量设置位置
在/etc/profile 中进行配置 或者cd /etc/profile.d/ 在其中 新建 变量名.sh 来指定
SHLVL
REPLY
RANDOM
SECONDS
IFS
PATH
HOME
验证:
(1)[root@localhost Desktop]# echo $PWD # 输出当前所在目录
/root/Desktop
(2)[root@localhost Desktop]# echo $UID #如果是root就返回0 在某些操作中 我们可以通过它来验证是不是root用户
0
(3)[root@localhost Desktop]# echo $RANDOM #随机数
12232
(4)[root@localhost Desktop]# echo $PATH #查看环境变量
/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/mysql/bin:/root/bin:/usr/local/apache2/bin:/usr/local/mysql/bin:/usr/local/apache2/bin
(5)[root@localhost Desktop]# echo $HOME #输出主目录
/root
2.本地变量(定义方式)
2.1 name=zhangsan
[root@localhost /]# name=zhangsan
[root@localhost /]# echo $name
zhangsan
这种定义方式是直接引用定义的内容,一般是连续字符或者数字 路径名等
2.2 name="zhangsan"
[root@localhost Desktop]# name="zhangsan"
[root@localhost Desktop]# test='$name'
[root@localhost Desktop]# echo $test
$name
单引号进行定义变量,里面写什么就是什么,就算你写的是引用变量,也会原样输出
2.3 name="zhangsan"
[root@localhost Desktop]# name=zhangsan
[root@localhost Desktop]# test="$name"
[root@localhost Desktop]# echo $test
zhangsan
双引号定义变量,是经过解析的输出内容,如果里面是变量,它会输出变量的值
3.特殊变量
3.1 $0 获取当前执行shell 脚步的名称
[root@localhost shtest]# vi test.sh
echo $0
[root@localhost shtest]# sh test.sh
test.sh
3.2 $n 获取当前脚步所需第几个参数,n=1..9 如果超过了10 需要用${10} 这样来引用
[root@localhost shtest]# vi num.sh
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
[root@localhost shtest]# sh num.sh 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
3.3 $# 获取shell的参数个数
[root@localhost shtest]# vi num.sh
#!/bin/sh
if [ "$#" -ne "10" ]
then
echo "need ten para"
exit 1
fi
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
[root@localhost shtest]# sh num.sh
need ten para
[root@localhost shtest]# sh num.sh 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
3.4 $$ 获取当前进程号
[root@localhost shtest]# vi t.sh
echo "test------"
idNum=$(kill -9 $$)
echo "$$"
echo "success"
[root@localhost shtest]# sh t.sh
test-----
Killed
可以发现 sucess 和id都没有输出 其实在kill 那里就根据Pid 把它杀了