Shell 脚本:变量
定义变量
定义一个变量时不需要指定类型,直接赋值即可。变量名由字母、数字或下划线组成,但不能以数字开头。
bash
variable_name=value
例如:
bash
name="kevin"
请注意,在赋值语句中,等号两边不能有空格,否则 Shell 会认为你在尝试执行命令。
使用变量
要引用变量的值,需要在变量名前加上 $
符号。
bash
echo $variable_name
echo ${variable_name}
例如:
bash
echo $name
echo ${name}
两种方式都可以使用,但是当变量名后面紧跟着字符时,需要用大括号 {}
来明确变量的边界,如 ${variable_name}text
。
变量作用域
- 局部变量:默认情况下,Shell 中定义的变量都是局部的,只在当前脚本或函数内部有效。
- 环境变量 :通过
export
命令可以将变量设置为环境变量,这样子进程也可以访问该变量。
bash
export variable_name=value
内置变量
Shell 提供了一些内置变量,这些变量包含有关系统和当前 shell 会话的信息。例如:
$0
- 当前脚本的名字$1
,$2
, ... - 传递给脚本或函数的参数$#
- 参数的数量$@
- 所有参数的列表$?
- 上一条命令的退出状态(成功为0,失败为非0)
特殊变量
还有一些特殊变量用于处理输入输出重定向、进程ID等。
$$
- 当前shell的进程ID$!
- 最后一个后台进程的PID
变量操作
- 测试变量是否已设置 :使用
-z
和-n
测试字符串长度是否为零或非零。 - 删除变量 :使用
unset
命令来删除变量。
bash
unset variable_name
- 读取用户输入 :使用
read
命令来从标准输入读取一行并将其存储到变量中。
bash
read variable_name
默认值和替代
如果希望在变量未被设置或为空的情况下提供默认值,可以使用以下语法:
bash
${variable_name:-default_value}
这将在 variable_name
未设置或为空时返回 default_value
。
总结
变量是 Shell 编程的核心元素之一,掌握它们对于编写有效的 Shell 脚本至关重要。通过练习和实验,你会逐渐熟悉这些概念,并能够更有效地利用它们。