Lesson 12: Shell 脚本基础

⏱ 約 15 分钟 6 个核心概念 7 条实战命令

Lesson 12: Shell 脚本基础

本课预计 15 分钟,涵盖 6 个核心概念、7 条实战命令、3 道巩固题。


🎯 学习目标

完成本课后,你将能够:

  • 理解并应用 Shebang
  • 理解并应用 变量
  • 理解并应用 条件判断
  • 理解并应用 循环
  • 理解并应用 函数
  • 理解并应用 参数传递
  • 在 VPS 上熟练运行相关命令
  • 通过测验验证掌握程度

📚 核心概念

概念 说明
Shebang Shebang 是本课核心技能点,实战中高频使用
变量 变量 是本课核心技能点,实战中高频使用
条件判断 条件判断 是本课核心技能点,实战中高频使用
循环 循环 是本课核心技能点,实战中高频使用
函数 函数 是本课核心技能点,实战中高频使用
参数传递 参数传递 是本课核心技能点,实战中高频使用

💡 提示:建议在 VPS 上跟着敲一遍命令,肌肉记忆比死记硬背更管用。


💻 实战命令速查

#!/bin/bash

作用:Shebang 指定解释器

#!/bin/bash

name="DevOps"

作用:定义变量

name="DevOps"

echo $name

作用:引用变量

echo $name

if [ $1 -gt 0 ]; then echo positive; fi

作用:条件判断

if [ $# -gt 0 ]; then echo "args: $#"; fi

for i in {1..5}; do echo $i; done

作用:for 循环

for i in {1..3}; do echo "Number: $i"; done

func() { echo "Hello $1"; }; func World

作用:定义函数

greet() { echo "Hi $1"; }; greet DevOps

$0 $1 $2

作用:脚本参数

$0=脚本名 $1=第一个参数

🛠️ 动手练习

建议在你的 VPS 上按顺序执行:

  1. 环境准备:确保 SSH 连通,有 sudo 权限
  2. 逐条实操:复制上方命令在终端运行,观察输出
  3. 变参数试:修改命令参数(如路径、端口、名称),看结果变化
  4. 组合用法:尝试管道、重定向组合多条命令

⚠️ 安全提醒:生产环境操作前,先在测试机/容器验证;重要数据操作前做快照/备份。


🧠 课后测验

完成上述练习后,做做测验巩固:

Q1. Shell 脚本第一行通常是什么?

    1. !/bin/bash

    1. !/usr/bin/python

    1. !/bin/sh

    1. !/usr/bin/env bash

👉 点击查看答案 **正确答案**:0. #!/bin/bash **解析**:#!/bin/bash 指定使用 bash 解释器执行脚本。

Q2. 变量赋值正确语法是?

    1. name = 'value'
    1. name='value'
    1. $name='value'
    1. set name='value'
👉 点击查看答案 **正确答案**:1. name='value' **解析**:Shell 中变量赋值等号两边不能有空格。

Q3. 循环遍历数组的语法?

    1. for i in ${arr[@]}
    1. for i in $arr
    1. foreach i in arr
    1. for i in arr
👉 点击查看答案 **正确答案**:0. for i in ${arr[@]} **解析**:${arr[@]} 展开数组所有元素。


📈 进度检查

  • [ ] 所有命令在 VPS 上跑通
  • [ ] 测验全对(或复盘错题)
  • [ ] 核心概念能用自己的话复述
  • [ ] 命令不看文档能敲出来

➡️ 下一课预告

Lesson 13 将继续深入运维核心技能,敬请期待!


本课程源码见:github.com/robert-kiyosaki-2024/linux-devops-101

💻 实战命令速查

#!/bin/bash

Shebang 指定解释器

#!/bin/bash
name="DevOps"

定义变量

name="DevOps"
echo $name

引用变量

echo $name
if [ $1 -gt 0 ]; then echo positive; fi

条件判断

if [ $# -gt 0 ]; then echo "args: $#"; fi
for i in {1..5}; do echo $i; done

for 循环

for i in {1..3}; do echo "Number: $i"; done
func() { echo "Hello $1"; }; func World

定义函数

greet() { echo "Hi $1"; }; greet DevOps
$0 $1 $2

脚本参数

$0=脚本名 $1=第一个参数

🧠 课后测验

Q1. Shell 脚本第一行通常是什么?

Q2. 变量赋值正确语法是?

Q3. 循环遍历数组的语法?