一、知识讲解
1. 脚本结构回顾
一个标准的 Shell 脚本通常包括:
Shell
#!/bin/bash # 指定解释器
# 脚本说明注释
# 脚本主体代码
✅ #!/bin/bash 被称为 “Shebang”,用于告诉系统脚本由哪个解释器执行。
所有 Shell 脚本都建议以此开头。
2. Shell 中的变量
变量是 Shell 编程的核心之一,用来保存和传递数据。
(1)定义变量
Shell
变量名=值
注意:
=两边不能有空格!- 命名规范:字母、数字、下划线组成,不能以数字开头。
示例:
Shell
name="Tom"
age=18
(2)使用变量
在使用时需要加 $:
Shell
echo $name
echo $age
也可写为 ${name},在拼接字符串时更安全:
Shell
echo "My name is ${name}, age is ${age}"
3. 环境变量
系统中内置了许多全局变量,例如:
| 变量名 | 含义 |
|---|---|
$USER |
当前用户 |
$HOME |
用户主目录 |
$PWD |
当前路径 |
$SHELL |
当前使用的 shell |
$PATH |
系统可执行文件路径 |
查看所有环境变量:
Shell
env
4. 命令替换
命令替换让我们可以把命令的执行结果赋值给变量。
两种写法:
Shell
today=`date`
today=$(date)
推荐使用 $() 方式(更清晰、可嵌套)。
5. 只读变量
如果希望变量值不能被修改,可以用 readonly:
Shell
readonly company="OpenAI"
再修改会报错:
plain
-bash: company: readonly variable
6. 删除变量
使用 unset 删除普通变量:
Shell
unset name
注意:unset 不能删除只读变量。
7. 特殊变量
| 变量 | 含义 |
|---|---|
$0 |
当前脚本名 |
$1 |
|
、$2 |
传入的第1、2个参数 |
$# |
参数个数 |
$@ |
所有参数(展开为独立参数) |
$* |
所有参数(整体为一个字符串) |
$$ |
当前脚本的进程号(PID) |
$? |
上一个命令的返回状态(0 表示成功) |
二、示例代码
示例 1:定义与使用变量
Shell
#!/bin/bash
name="Alice"
city="Beijing"
echo "姓名:$name"
echo "城市:$city"
运行结果:
plain
姓名:Alice
城市:Beijing
示例 2:命令替换
Shell
#!/bin/bash
today=$(date +%Y-%m-%d)
echo "今天的日期是:$today"
示例 3:脚本参数
Shell
#!/bin/bash
echo "脚本名:$0"
echo "第一个参数:$1"
echo "第二个参数:$2"
echo "参数个数:$#"
执行命令:
Shell
./test.sh Linux Shell
输出:
plain
脚本名:./test.sh
第一个参数:Linux
第二个参数:Shell
参数个数:2
示例 4:只读与删除
Shell
#!/bin/bash
readonly name="Tom"
echo $name
unset name # 将报错
三、课堂练习
🧩 练习 1:变量定义与输出
编写一个脚本 user_info.sh,要求输出:
plain
你好,$USER!
你当前的目录是:$PWD
你正在使用的 Shell 是:$SHELL
🧩 练习 2:命令替换
创建脚本 time_info.sh,输出当前日期与系统运行时间:
Shell
#!/bin/bash
today=$(date "+%Y-%m-%d %H:%M:%S")
uptime_info=$(uptime -p)
echo "当前时间:$today"
echo "系统已运行:$uptime_info"
🧩 练习 3:脚本参数
编写一个脚本 greet.sh,要求执行:
Shell
./greet.sh Alice 25
输出:
plain
你好,Alice,你今年 25 岁!
提示:可使用 $1 和 $2 获取参数。
✅ 本节目标总结:
- 掌握变量定义、引用、命令替换
- 理解系统环境变量与特殊参数变量
- 能编写可接受参数的 Shell 脚本