Shell中引用变量用$var或${var},推荐${var}避免歧义;双引号允许展开,单引号禁止展开;未定义变量展开为空;可用${var:-default}提供默认值。

直接用 $ 符号加变量名就能输出和引用 Shell 变量的值,比如 $PATH 或 ${HOME}。关键在于写法是否准确、引号是否得当,以及变量是否已定义。
基本引用方式:$ 和 ${}
两种写法都有效,但推荐用花括号形式:
-
$var_name:简洁,适合简单变量名(如不含数字开头、无空格、无歧义) -
${var_name}:明确边界,避免歧义。例如${name}123表示变量值后接“123”,而$name123会被解释为变量name123 - 变量未定义时,
$var展开为空字符串,不会报错
输出变量值:用 echo 最常用
在终端或脚本中,最直接的方式是配合 echo 命令:
-
echo $USER—— 输出当前用户名 -
echo "${HOME}/bin"—— 拼接路径,双引号确保变量被展开且空格不被截断 -
echo '$HOME'—— 单引号禁用变量展开,原样输出文字$HOME
注意引号对变量展开的影响
引号不是可有可无的装饰,它决定变量是否生效:
- 双引号
" ":允许变量展开和转义字符(如\n),适合含空格或需拼接的场景 - 单引号
' ':完全禁止展开,所有内容字面输出,连$和反斜杠都失效 - 不加引号:变量值若含空格、通配符(如
*)、换行等,可能被 shell 误分割或展开,容易出错
检查变量是否存在或是否为空
输出前可先确认变量状态,避免意外空值:
-
echo ${var:-"default"}—— 若var未设置或为空,输出default -
[ -z "$var" ] && echo "var is empty"—— 判断是否为空字符串 -
declare -p var—— 查看变量定义详情(包括类型、是否只读)











