🐧 Linux Shell 脚本编程一课一得总结(从入门到实战)

📌 前言

在本阶段的学习中,我系统学习了 Linux Shell 脚本编程的基础知识,从最开始的脚本声明,到变量、条件判断、循环结构,再到最后的综合实战——MAC 地址采集脚本的编写,让我对 Shell 脚本有了一个从“不会写”到“能独立完成简单脚本”的提升。

本文将以“一课一得”的形式,总结我本次学习的核心内容与收获。


🧩 一、Shell 脚本基础(脚本声明)

📍1. 什么是脚本声明

在编写 Shell 脚本时,我首先学会的就是脚本声明

#!/bin/bash

👉 作用:
指定脚本使用的解释器(这里是 bash)

如果没有这句话,脚本可能无法正常执行。


📍2. Shell 脚本应用思路

我总结出 Shell 编程的基本思路:

  1. 明确需求(要做什么)
  2. 拆分步骤(一步一步执行)
  3. 用命令实现
  4. 写入脚本
  5. 测试优化

📍3. 定时任务 crontab

在学习中,我了解到 Shell 可以结合 定时任务 自动执行。

crontab -e

例如:

*/5 * * * * /root/test.sh

👉 表示:每5分钟执行一次脚本

💡 收获:Shell 可以实现自动化运维,非常实用!


📍4. 练习:welcome.sh

#!/bin/bash
echo "欢迎来到Linux世界!"
echo "当前用户是:$(whoami)"
echo "当前时间是:$(date)"

👉 让我掌握了最基础的脚本结构


🔧 二、Shell 变量

📍1. 变量基础

name="zhangsan"
echo $name

👉 注意:等号两边不能有空格!


📍2. read 命令(交互输入)

read -p "请输入你的名字:" name
echo "你好,$name"

👉 可以实现用户交互


📍3. 环境变量 export

export age=18

👉 作用:让变量在子进程中也能使用


📍4. expr 运算

expr 1 + 2

👉 注意:符号两边必须有空格


📍5. 位置变量

echo $1
echo $2

👉 用于接收参数

例如:

bash test.sh hello world

📍6. 预定义变量

常见的有:

  • $0:脚本名称
  • $#:参数个数
  • $*:所有参数
  • $?:上一个命令执行结果

👉 在写脚本时非常重要!


⚖️ 三、条件判断语句

📍1. test 命令

✔ 文件判断
test -f file.txt
✔ 数值比较
test 1 -eq 1
✔ 字符串比较
test "$a" = "$b"

📍2. if 语句

✔ 单分支
if [ $a -gt 10 ]
then
    echo "大于10"
fi
✔ 双分支
if [ $a -gt 10 ]
then
    echo "大于10"
else
    echo "小于等于10"
fi
✔ 多分支
if [ $a -gt 10 ]
then
    echo "大"
elif [ $a -eq 10 ]
then
    echo "等于"
else
    echo "小"
fi

📍3. 实战:主机监控脚本

#!/bin/bash
ping -c 2 8.8.8.8 > /dev/null

if [ $? -eq 0 ]
then
    echo "网络正常"
else
    echo "网络异常"
fi

👉 收获:可以用 Shell 做简单运维监控


🔁 四、循环与分支语句

📍1. for 循环

for i in 1 2 3
do
    echo $i
done

📍2. while 循环

i=1
while [ $i -le 3 ]
do
    echo $i
    i=$(expr $i + 1)
done

📍3. case 语句

case $1 in
start)
    echo "启动"
;;
stop)
    echo "停止"
;;
*)
    echo "未知参数"
;;
esac

👉 常用于菜单或参数判断


🚀 五、综合实战:MAC 地址采集脚本

这是本次学习最重要的实践内容!

📍脚本示例

#!/bin/bash

ip="192.168.1"
i=1

while [ $i -le 254 ]
do
    ping -c 1 $ip.$i > /dev/null
    if [ $? -eq 0 ]
    then
        arp -n $ip.$i
    fi
    i=$(expr $i + 1)
done

📍实现思路

  1. 遍历整个网段
  2. 使用 ping 探测主机是否存活
  3. 使用 arp 获取 MAC 地址
  4. 循环执行

📍我的收获

✔ 学会了 while 循环的实际应用
✔ 理解了网络扫描的基本原理
✔ 能写简单运维脚本


🧠 总结与反思

通过本次 Shell 脚本学习,我有以下几点收获:

✅ 技术收获

  • 掌握 Shell 基本语法
  • 能写简单自动化脚本
  • 理解 Linux 运维基础思路

✅ 能力提升

  • 逻辑思维能力提升
  • 问题拆解能力增强
  • 实践能力提高

❗不足之处

  • 对复杂脚本还不熟练
  • 调试能力有待加强
  • 命令记忆还不够牢固

🌟 结语

Shell 脚本虽然语法简单,但功能非常强大,是 Linux 运维和网络工程师必须掌握的一项技能。

通过这次学习,我已经入门 Shell 编程,接下来我会继续深入学习,争取能够编写更复杂、更实用的自动化脚本。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐