Shell变量和参数是Shell脚本编程中两个非常基础且重要的概念,它们用于存储、传递和操作数据。
Shell变量:
定义与赋值:在Shell中,可以通过等号(=)给变量赋值,例如:
variable_name=value
注意事项:
- 变量名和等号之间不能有空格。
- 变量名必须符合命名规则,即只能包含字母、数字和下划线,但不能以数字开头,也不能使用Shell保留字作为变量名。
引用:
- 使用
$variable_name
来引用变量的值。 - 使用
${variable_name}
的形式可以更清晰地区分变量名和后续文本,尤其是在变量名后紧跟特殊字符时。 - 若要保留变量内部的空白和特殊字符,需要将变量名用双引号括起来,如
"${variable_name}"
。 - 单引号
'${variable_name}'
将阻止变量扩展,即不会替换变量内容,而是原样输出单引号内的文本。
- 使用
unset:可以使用
unset variable_name
删除一个已定义的变量。
位置参数:
在Shell脚本执行时,通过命令行传入的参数可以作为位置参数使用,它们以
$0
至$9
表示,其中:$0
是脚本本身的名字。$1
是第一个参数,$2
是第二个参数,依此类推直到$9
。- 通过
shift
命令可以改变参数的位置并丢弃最左边的一个参数。
还可以使用特殊变量
"$@"
或"$*"
来引用所有参数:"$@"
会保持参数之间的空格,每个参数视为独立实体。"$*"
通常会将所有参数合并为一个字符串,参数之间由IFS(内部字段分隔符,默认为空格、制表符、换行符)分隔。
预定义变量
$#
表示参数个数,$*
或$@
未加引号时行为类似,不过推荐使用"$@"
以确保参数正确处理。
举例:
#!/bin/bash
# 定义变量
my_var="Hello World"
# 输出变量值
echo $my_var
echo "${my_var}"
# 接收命令行参数
echo "The first argument is: $1"
echo "All arguments are: $@"
# 示例脚本执行:./script.sh arg1 arg2 arg3
在这个例子中,arg1
、arg2
和 arg3
将分别对应 $1
、$2
和 $3
。