绝技三"自动化内功"-Day38|内力运转:脚本变量、输入与判断

10 次阅读 2026-10-29 11:52

📖 知识点

1. 脚本里的变量

 

#!/bin/bash
name="小明"          # 定义变量(等号两边无空格)
echo "你好,$name"   # 用 $变量名 读取

 

变量存数据,用 $变量名 读取。名字自己定,等号两边不能有空格。

2. 读取用户输入:read

 

#!/bin/bash
echo "请输入你的名字:"
read name            # 等待用户输入,存进变量name
echo "你好,$name!"

 

read 变量名 会停下来等用户输入,回车后存进变量。

3. if 判断

 

if [ 条件 ]; then
    执行A
else
    执行B
fi

 

结构:if开始,then接条件成立的分支,else不成立分支,最后 fi 结束(if 倒过来写)。

常用条件比较:

 

 

写法含义

[ "$a" = "$b" ]

字符串相等

[ $n -gt 5 ]

数字大于 5(-gt)

[ -f 文件 ]

文件存在

4. 完整示例(输入 + 判断)

 

#!/bin/bash
echo "请输入一个数字:"
read n
if [ $n -gt 10 ]; then
    echo "$n 大于 10"
else
    echo "$n 不大于 10"
fi

 

⚠️ 易错提醒

  1. 变量赋值 name="小明" 等号两边无空格,读取用 $name

  2. read 变量 会等用户输入,回车才继续

  3. if 的写法是 if [ 条件 ]; then ... fi,then 前要有分号 ;,结束要 fi

⚔️ Kata 实战任务

任务需求:

  1. 用 vim 创建脚本 greet.sh

  2. 脚本里:定义变量、用 read 读取用户名字、用 if 判断用户输入的名字是不是 "admin"

  3. 运行脚本,输入不同内容,观察判断结果

  4. 体会变量 + 输入 + 判断的组合

参考代码(在终端依次敲)

 

# 1. 创建脚本
vim greet.sh
#   内容:
#   #!/bin/bash
#   echo "请输入你的名字:"
#   read name
#   if [ "$name" = "admin" ]; then
#       echo "欢迎管理员 $name!"
#   else
#       echo "你好,普通用户 $name!"
#   fi
#   (:wq 保存退出)

# 2. 运行,输入 admin
bash greet.sh

# 3. 再运行,输入其他名字
bash greet.sh

 

运行示例:

 

user@linux:~$ bash greet.sh
请输入你的名字:
admin
欢迎管理员 admin!

user@linux:~$ bash greet.sh
请输入你的名字:
小明
你好,普通用户 小明!

 

💡 观察:脚本会停下来等你输入,然后判断 —— 输入 admin 走 "管理员" 分支,输入其他走 "普通用户" 分支。变量存数据、read 收输入、if 做判断,三者配合让脚本 "有脑子" 了。

🧠 思考题

  1. read name 的作用是什么?脚本执行到这一行时会发生什么?

  2. if [ "$name" = "admin" ] 里的 [ ] 和 = 各表示什么?fi 为什么不能省?