您的位置:

Linux运维中实用的Shell变量

一、特殊变量

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变量是我们经常使用到的必备技能,灵活掌握这些变量的使用方法,可以有效地提高我们的工作效率。