一、特殊变量
1、$#: 命令行参数的个数。
2、$*: 命令行所有参数的内容,在全部参数作为一个字符串处理。
3、$@: 命令行所有参数的内容,在每个参数都作为一个字符串处理。
4、$0: 当前脚本名。
5、$?: 上一条命令的返回值。
6、$$: 当前脚本的进程号。
二、位置参数变量
1、$1, $2, ……$n: 命令行参数1、2、……n。
2、$0:当前脚本名。
三、环境变量
1、$HOME: 当前用户的家目录的完整路径。
2、$PATH: 一组用 ':' 分隔开的目录,shell 在这些目录中查找可执行文件
$ echo $HOME /home/user $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
四、特殊字符
特殊字符,用来对字符串或命令行参数进行操作。
1、$: 取变量值的内容,如:$variable。
2、#:取字符或参数的长度,如:${#variable}。
3、%:从后向前删除匹配的最小值字符,如:${variable%/*}。
4、%%:从后向前删除匹配的最大值字符,如:${variable%%/*}。
5、/:替换字符串匹配的字符,如:${variable/old/new}。
6、//:替换字符串匹配的所有字符,如:${variable//old/new}。
五、共享变量
1、export: 用于将局部变量提升为全局变量。
#!/bin/bash function func { local var1="hello" echo "var1 is ${var1}" echo "var2 is ${var2}" } export var2="world" func
2、source: 执行脚本,使共享变量在当前 Shell 中生效。
#!/bin/bash var1="hello" export var2="world" echo "var1 is ${var1}" echo "var2 is ${var2}" source test.sh echo "var2 is ${var2}"
六、数组
数组能够存储多个值,并通过下标索引来访问数组元素。
1、定义数组
myArray=(one two three four five)
2、访问数组
echo ${myArray[0]} echo ${myArray[*]} echo ${#myArray[*]}
3、向数组中添加元素
myArray[5]="six" myArray+=("seven")
4、数组的循环遍历
for var in ${myArray[*]} do echo ${var} done
七、用户自定义变量
1、set: 设置变量。
2、read: 读取用户输入的内容到变量中。
read -t 5 -p "Enter name: " name
八、数组变量解释器(declare)
declare命令可以设置变量的属性,包括数组元素类型、只读属性、可重复赋值、调试属性等。
1、定义只读变量
readonly myVar="hello"
2、定义数组元素类型
declare -a myArray # 数字索引数组 declare -A myArray # 带关联键值的数组
3、定义整数变量
declare -i myInt=10
4、定义调试变量
declare -x myDebugVar="debug info"
九、总结
Shell变量在Linux运维中起着不可替代的作用,掌握了Shell变量的使用方法,对运维人员来说是非常重要的技能。上述涉及到的Shell变量是我们经常使用到的必备技能,灵活掌握这些变量的使用方法,可以有效地提高我们的工作效率。