Shell基础语法与脚本实战

前言

        Shell 是 Linux 用户与系统交互的主要方式,尤其在服务器运维、自动化部署、批量管理等场景中,Shell 脚本具有不可替代的作用。本文将系统讲解 Linux Shell 的基础语法、常用命令、流程控制、变量与函数等核心知识点,并结合实际案例进行实战演练,帮助读者从入门到实践掌握 Shell 编程。


一、认识 Shell

1.1 什么是 Shell?

Shell 是用户与内核之间的桥梁,是一种命令解释器。

常见的 Shell 类型包括:

  • sh:Bourne Shell,传统标准。

  • bash:Bourne Again Shell,最常用的默认 Shell。

  • zsh:功能增强的 Shell,适合交互式操作。

  • dash:轻量快速,Ubuntu 默认用于脚本执行。

1.2 Bash 与 Shell 的区别

        Bash 是 GNU 推出的 Bourne Shell 的增强版,是 Shell 的一种实现,具备更多特性,如命令自动补全、数组支持等。

1.3 Shell 脚本的执行方式

# 方式一:直接执行
chmod +x script.sh
./script.sh

# 方式二:通过解释器执行
bash script.sh

二、Shell 基础语法

2.1 注释

  • 单行注释以 # 开头

# 这是注释

2.2 变量定义与使用

name="Tom"
echo "Hello, $name"
  • 等号两边不能有空格。

  • 使用 ${} 可以增强变量解析能力:echo "${name}abc"

2.3 输入与输出

read -p "请输入用户名: " user

echo "你输入的是:$user"

2.4 运算符

  • 算术运算(整数)

a=5
b=3
echo $((a + b))
  • 字符串比较:=, !=, <, >

  • 数值比较:-eq, -ne, -lt, -le, -gt, -ge


三、流程控制语句

3.1 if 判断

if [ $a -gt $b ]; then
  echo "$a > $b"
elif [ $a -eq $b ]; then
  echo "$a = $b"
else
  echo "$a < $b"
fi

3.2 case 语句

read -p "请输入(y/n): " choice
case $choice in
  y|Y) echo "你选择了是";;
  n|N) echo "你选择了否";;
  *) echo "无效选择";;
esac

3.3 for 循环

for i in 1 2 3 4 5; do
  echo "当前值: $i"
done

3.4 while 循环

count=0
while [ $count -lt 5 ]; do
  echo "count: $count"
  ((count++))
done

3.5 until 循环

until [ $count -ge 5 ]; do
  echo "count: $count"
  ((count++))
done

四、Shell 函数

function say_hello() {
  echo "Hello, $1!"
}

say_hello "World"
  • 使用 $1, $2 表示位置参数。

  • return 返回值只能是整数(0-255)。


五、Shell 中的特殊变量

变量含义
$0当前脚本名
$1~$9位置参数
$#传入参数个数
$*所有参数(整体)
$@所有参数(分割)
$$当前 Shell 进程 ID
$?上一条命令的退出状态

六、Shell 脚本实战案例

6.1 批量创建用户

#!/bin/bash
for user in user1 user2 user3; do
  if id "$user" &>/dev/null; then
    echo "$user 已存在"
  else
    useradd "$user"
    echo "创建 $user 成功"
  fi
done

6.2 自动备份指定目录

#!/bin/bash
src=/etc
dst=/backup/etc_$(date +%F).tar.gz
tar -zcf $dst $src && echo "备份成功:$dst"

6.3 检查服务是否存活

#!/bin/bash
service=nginx
if pgrep $service > /dev/null; then
  echo "$service 正在运行"
else
  echo "$service 未运行,尝试启动..."
  systemctl start $service
fi

七、Shell 脚本调试与优化

7.1 调试技巧

  • 使用 bash -x script.sh 查看执行过程。

  • 在脚本中加入 set -x 开启调试,set +x 关闭。

7.2 错误处理

  • set -e:一旦出错即退出。

  • set -u:使用未定义变量时报错。

7.3 脚本优化建议

  • 使用函数封装逻辑模块。

  • 加入注释与日志输出。

  • 使用 trap 捕获信号并清理资源。


八、扩展话题:Shell 与 cron 定时任务

Shell 脚本常与定时任务结合实现自动化。

# 每天凌晨 2 点执行备份脚本
0 2 * * * /home/user/backup.sh
  • crontab -e 编辑任务

  • crontab -l 查看任务


九、总结

        Linux Shell 是学习和掌握 Linux 系统的关键技能。通过本篇文章的系统学习,从变量定义到流程控制,从函数封装到脚本实战,再到调试优化与扩展应用,读者可逐步建立 Shell 编程的完整认知体系。

        在实际工作中,Shell 脚本广泛应用于日常维护、系统部署、监控报警等自动化任务中,建议多实践、多总结,形成自己的脚本模板库,不断提升工作效率与自动化水平。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stay Passion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值