💜 想真正擅长编程? 从一门课程开始,100% 免费

第2节:Shell 基础语法与变量使用

一、知识讲解

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 脚本