变量详解
原创2026/3/5大约 2 分钟
在 Shell 编程中,变量是存储数据的容器。与 Java 或 C 不同,Shell 变量不需要声明类型,默认所有的变量都是字符串。
变量的定义与使用
定义变量
变量名和等号之间不能有空格。
name="Liu Chunlong"
age=25使用变量
使用变量时,需要在变量名前加上 $ 符号。
echo $name
# 或者使用花括号(推荐,能够明确变量边界)
echo "My name is ${name}, I am ${age} years old."注意事项
- 变量名只能包含字母、数字和下划线,且不能以数字开头。
- 等号两边严禁空格:
name = "jack"是错误的写法。
变量的分类
1. 局部变量
在脚本或命令中定义,仅在当前 Shell 实例中有效。
2. 环境变量
所有的程序(包括 Shell 启动的程序)都能访问环境变量。
- 查看所有环境变量:
env - 设置环境变量:
export MY_PATH=/usr/local/nginx
3. 只读变量
使用 readonly 命令可以将变量定义为只读,只读变量的值不能被改变。
url="[https://nginx.org](https://nginx.org)"
readonly url
# url="baidu.com" # 此时修改会报错特殊位置参数变量
在执行脚本时,经常需要向脚本传递参数。Shell 提供了一组特殊的变量来接收这些参数:
| 变量 | 含义 |
|---|---|
| $0 | 当前脚本的文件名 |
| $n | 第 n 个参数($1 表示第一个参数,$2 表示第二个...) |
| $# | 传递给脚本的参数个数 |
| $* | 传递给脚本的所有参数(作为一个整体字符串) |
| $@ | 传递给脚本的所有参数(每个参数都是独立的字符串) |
| $? | 上一条命令的退出状态(0 表示成功,非 0 表示失败) |
示例演示
创建一个 test.sh 脚本:
#!/bin/bash
echo "脚本名:$0"
echo "第一个参数:$1"
echo "参数总数:$#"执行命令:bash test.sh nginx 80
输出结果中 $1 为 nginx,$# 为 2。
变量的删除
使用 unset 命令可以删除变量(但不能删除只读变量)。
course="Shell Script"
unset course
echo $course # 输出为空总结
变量是脚本自动化的基础。在编写 Nginx 管理脚本时,我们通常会将 Nginx 的安装路径、进程 ID 等定义为变量,方便后续统一调用和修改。
至此,本章节的学习就到此结束了,如有疑惑,可对接技术客服进行相关咨询。