shell变量
1.系统变量
常用的系统变量
env:显示用户的环境变量
2.自定义变量
2.1定义规则
变量名称=值
注意:
等号两侧不能有空格
变量名称一般习惯大写
2.2变量使用
普通使用
[root@hadoop-node01 ~]# address=深圳 [root@hadoop-node01 ~]# echo $address 深圳
单引号使用
[root@hadoop-node01 ~]# username1='波波烤鸭' [root@hadoop-node01 ~]# echo $username1 波波烤鸭
# 单引号有脱意的作用 [root@hadoop-node01 ~]# username2='波波烤鸭$address' [root@hadoop-node01 ~]# echo $username2 波波烤鸭$address
双引号的使用
[root@hadoop-node01 ~]# username2="波波烤鸭$address" [root@hadoop-node01 ~]# echo $username2 波波烤鸭深圳
双引号中对变量的引用会起作用。
变量的累加
":"通过冒号累加
取消变量 unset
[root@hadoop-node01 ~]# echo $username2 波波烤鸭深圳 [root@hadoop-node01 ~]# unset username2 [root@hadoop-node01 ~]# echo $username2
提示全局变量export
export 可以将局部变量提升为全局变量
创建一个s1.sh脚本文件,内容如下:
#!/bin/bash stu1=bobo1 export stu2=bobo2
执行脚本并查看变量
[root@hadoop-node01 ~]# source s1.sh
2.3返回值赋值
反引号的使用
反引号,运行里面的命令,并把结果返回给变量P1
[root@hadoop-node01 ~]# ls apps s1.sh shellScript zookeeper.out [root@hadoop-node01 ~]# P1=`ls` [root@hadoop-node01 ~]# echo $P1 apps s1.sh shellScript zookeeper.out
$() 等价于反引号
[root@hadoop-node01 ~]# P2=$(ls) [root@hadoop-node01 ~]# echo $P2 apps s1.sh shellScript zookeeper.out
3.特殊变量
$?
$$
当前进程编号
$0
当前脚本名称
[root@hadoop-node01 ~]# ./s1.sh 当前执行的脚本名称是:./s1.sh
$n
表示n位置的输入参数(n代表数字,n>=1)
[root@hadoop-node01 ~]# ./s1.sh a1 a2 a3 a4 a5 当前执行的脚本名称是:./s1.sh 第一个参数a1 第二个参数a2 第三个参数a3
$#
表示参数的个数,常用于循环
当前执行的脚本名称是:./s1.sh 第一个参数 第二个参数 第三个参数 参数总的个数:0 [root@hadoop-node01 ~]# ./s1.sh b1 b2 b3 b4 b5 当前执行的脚本名称是:./s1.sh 第一个参数b1 第二个参数b2 第三个参数b3 参数总的个数:5
$*和$@
都表示参数列表 【在包含""的情况下 $*把循环数据当做一条参数处理了】
正常使用
双引号包裹$*和$@使用