变量定义
- 命名规范:变量名应遵循一定规则,只能包含字母、数字和下划线,且不能以数字开头。例如,
valid_variable=10
是正确的,而 123_variable=10
是错误的。
- 初始化:审查变量是否在使用前进行了初始化。例如,若脚本中有
echo $uninitialized_variable
,在未初始化 uninitialized_variable
时就使用会导致问题。应先 uninitialized_variable="value"
后再使用。
变量使用
- 引用方式:正确使用变量引用,使用
$variable
或 ${variable}
格式。例如,echo $name
输出 name
变量值。在复杂场景下,如与其他字符串拼接,${variable}
能更清晰界定变量边界,如 echo "Hello ${name}!"
。
- 命令替换中的使用:若通过命令结果给变量赋值,如
files=$(ls)
,确保命令执行正确且变量获取到预期结果。若目录无权限访问,ls
命令失败,files
变量值可能非预期。
变量作用域
- 全局变量:脚本顶层定义的变量为全局变量,在整个脚本中都可访问。例如:
global_var=10
function print_global {
echo $global_var
}
print_global
- 局部变量:在函数内部使用
local
关键字定义局部变量,其作用域仅限于函数内部。例如:
function local_variable_example {
local local_var=20
echo $local_var
}
local_variable_example
echo $local_var # 这里无法访问到 local_var,会输出空值
- 子 shell 中的变量作用域:子 shell 有自己独立的变量空间。例如
(var=30; echo $var)
创建了一个子 shell,在子 shell 外无法访问子 shell 内定义的 var
变量。