一、变量使用
1. 查看
使用echo &valName查看变量值
[root@izwz9eldxtlzr8ehu1fmjbz batch]# echo $HOME
/root
2. 新建
-
局部变量
key=val新建普通变量
[root@izwz9eldxtlzr8ehu1fmjbz batch]# name=stopping
[root@izwz9eldxtlzr8ehu1fmjbz batch]# echo $name
stopping
-
静态变量
readonly key=val设置静态变量,静态变量不能撤销
[root@izwz9eldxtlzr8ehu1fmjbz batch]# readonly staticName=staticStopping
[root@izwz9eldxtlzr8ehu1fmjbz batch]# echo $staticName
staticStopping
-
全局变量
全局变量可以提供给其他shell程序使用,在shell脚本中使用局部变量是读取不到值的。使用
export key将已存在的变量升级为全局变量,或者是export key=val创建全局变量。在shell脚本尝试获取
$name变量值#!/bin/bash echo "hello stopping" echo $name局部变量,读取不到val
[root@izwz9eldxtlzr8ehu1fmjbz first]# sh helloworld.sh hello stopping 升级为全局变量
[root@izwz9eldxtlzr8ehu1fmjbz first]# export name [root@izwz9eldxtlzr8ehu1fmjbz first]# sh helloworld.sh hello stopping stopping
3. 撤销
unset key撤销变量
[root@izwz9eldxtlzr8ehu1fmjbz batch]# unset name
[root@izwz9eldxtlzr8ehu1fmjbz batch]# echo $name
[root@izwz9eldxtlzr8ehu1fmjbz batch]# unset staticName
-bash: unset: staticName: cannot unset: readonly variable
二、 特殊变量
1. $n
特殊变量指的是$n所表示的变量,其中n表示数字
-
$0 表示脚本名称
-
{10}`表示
新建shell脚本,输出脚本名名称 和第一个、第二个参数。
#!/bin/bash
echo $0 $1 $2
执行脚本
[root@izwz9eldxtlzr8ehu1fmjbz specialval]# sh specailVal.sh 1
specailVal.sh 1
[root@izwz9eldxtlzr8ehu1fmjbz specialval]# sh specailVal.sh stopping
specailVal.sh stopping
[root@izwz9eldxtlzr8ehu1fmjbz specialval]# chmod 777 specailVal.sh
[root@izwz9eldxtlzr8ehu1fmjbz specialval]# ./specailVal.sh hello
./specailVal.sh hello
[root@izwz9eldxtlzr8ehu1fmjbz specialval]# vim specailVal.sh
2. $#
$# 获取所有的参数个数。
#!/bin/bash
echo $#
输出结果
[root@izwz9eldxtlzr8ehu1fmjbz specialval]# sh specailVal2.sh hello stopping
2
3. $*
$*是获取所有的参数值。
#!/bin/bash
echo $0 $1 $2
echo $#
echo $*
执行shell文件,这里执行的参数是和$n有区别的,$*是获取所有参数值但是不能获取到shell脚本的文件名称。
[root@izwz9eldxtlzr8ehu1fmjbz specialval]# sh specailVal.sh stopping
specailVal.sh stopping
1
stopping
4. $@
$@是获取所有的参数值。
#!/bin/bash
echo $0 $1 $2
echo $#
echo $*
echo $@
执行结果
[root@izwz9eldxtlzr8ehu1fmjbz specialval]# sh specailVal.sh stopping
specailVal.sh stopping
1
stopping
stopping
5. $?
该变量是获取上次命令执行的结果,如果 上次命令正确执行则是0,否则非0。应用场景在逻辑判断中处理。
[root@izwz9eldxtlzr8ehu1fmjbz specialval]# $?
-bash: 0: command not found
[root@izwz9eldxtlzr8ehu1fmjbz specialval]# echo $?
127
[root@izwz9eldxtlzr8ehu1fmjbz specialval]# sh specailVal.sh
specailVal.sh
0
[root@izwz9eldxtlzr8ehu1fmjbz specialval]# echo $?
0
三、注意事项
- 等号左右两边不能有空格,如果值太长需要用引号
- 默认为字符串类型无法运算
- 静态变量无法撤销
四、本章节关键字
- export 设置全局变量
- unset 撤销变量