Linux脚本编程Bash实例:零基础必学的5个实战操作

前置准备


在开始操作前,请确保你满足以下条件:



  • 拥有一台Linux服务器或虚拟机(CentOS 7/8、Ubuntu 20.04+ 均可,云服务器也适用)。

  • 能够通过SSH终端连接服务器(Windows用户推荐 Putty 或 Xshell,macOS/Linux 直接使用终端)。

  • 已安装 bash shell(绝大多数Linux发行版默认自带,可通过 echo $SHELL 确认显示 /bin/bash)。

  • 熟悉基本命令如 cdlsmkdirvimnano

  • 注意:脚本需要执行权限,默认新建文件没有 x 权限,后续会讲如何添加。


分步操作


实例1:第一个Hello World脚本



  1. 创建脚本文件:


mkdir -p ~/bash_practice && cd ~/bash_practice
vim hello.sh


  1. 写入以下内容:


#!/bin/bash
echo "Hello, World!"

第一行 #!

/bin/bash
称为 shebang,指定解释器。



  1. 赋予执行权限并运行:


chmod +x hello.sh
./hello.sh

输出 Hello, World! 即成功。


实例2:使用变量和用户输入


创建一个交互式脚本 greet.sh


#!/bin/bash

读取用户输入

echo "请输入你的名字:"
read name
echo "Welcome to Linux scripting, $name!"


运行:./greet.sh,输入名字,会看到欢迎语。


实例3:循环批量重命名文件


假设当前目录有多个 .txt 文件,想批量加前缀 backup_


#!/bin/bash
for file in *.txt; do
mv "$file" "backup_$file"
done
echo "重命名完成!"

先创建测试文件:touch a.txt b.txt c.txt,执行脚本后用 ls 查看文件名变化。


实例4:条件判断与备份脚本


备份 /var/log/syslog~/backup/ 目录,并判断是否成功:


#!/bin/bash
backup_dir="$HOME/backup"
mkdir -p "$backup_dir"
if cp /var/log/syslog "$backup_dir/syslog_$(date +%F).bak"; then
echo "备份成功"
else
echo "备份失败,请检查权限或源文件"
fi

注意:$(date +%F) 生成当前日期,确保备份文件不重名。


实例5:脚本参数传递与函数


创建 args_demo.sh


#!/bin/bash
usage() {
echo "用法:$0 <名字> <年龄>"
exit 1
}

if [ $# -lt 2 ]; then
usage
fi

echo "你好,$1!你的年龄是 $2 岁。"


运行:./args_demo.sh 小明 25,输出 你好,小明!

你的年龄是 25 岁。


避坑指南



  • 忘记加 shebang:脚本第一行必须是 #!/bin/bash,否则可能用默认 shell 执行,导致语法错误。

  • 权限不足:新创建的脚本文件默认无执行权限,必须执行 chmod +x 文件名.sh 才能 ./ 运行。

  • 变量引用未用双引号:如 mv $file 当文件名含空格时会出错,应写成 "$file"

  • 路径问题:脚本内若用到相对路径,建议先 cd 到目标目录或使用绝对路径。

  • 忘记给 if 条件留空格if [条件] 是错误的,必须 if [ 条件 ](方括号前后有空格)。

  • 循环中文件列表为空的处理:如果 *.txt 没有匹配项,for file in *.txt 会直接赋值 *.txt 字符串,导致意外。建议先 shopt -s nullglob 或在循环前判断。


高频问题解答


Q1:执行脚本时提示 Permission denied 怎么办?

A:使用 chmod +x 脚本名.sh 添加执行权限,再重新运行。


Q2:脚本中使用了 read,但运行后直接结束没等输入?

A:可能是你使用了管道或重定向输入 ./script.sh < input.txt,或系统将 read 读取了其他流。检查是否在交互式终端运行。


Q3:运行 ./hello.sh 提示 No such file or directory

A:确认当前目录下存在该文件,可用 ls -l 查看;也可能是 shebang 路径写错(比如 #!/bin/sh 但系统无该路径)。


Q4:循环 for file in *.txt 没找到文件时直接执行了 mv 导致错误?

A:建议在循环前加 shopt -s nullglob,这样无匹配时循环次数为0。


Q5:如何调试 Bash 脚本?

A:运行 bash -x 脚本名.sh,会逐行显示执行的命令和变量值,方便定位错误。


效果验证



  • 对于实例1:运行后控制台输出 Hello, World!

  • 实例2:交互式输入名字,输出包含该名字的欢迎语。

  • 实例3:执行 ls 看到所有 .txt 文件被重命名为 backup_xxx.txt

  • 实例4:检查 ~/backup/ 目录下是否有 syslog_YYYY-MM-DD.bak 文件,且内容与原文件一致。

  • 实例5:传入错误参数(如只传一个参数)应打印用法提示并退出;正确参数则输出问候。


如果你正在处理 Linux脚本编程Bash实例,建议先按本文步骤完整执行三个以上的实例,再根据自己的业务需求做微调;

遇到异常时优先回看避坑和高频问题部分。

多写多调试,就能快速掌握 Bash 脚本的日常用法。

分享到:
上一篇
零基础也能上手:WordPress集成AI写作全流程指南
下一篇
Docker部署Nginx反向代理:从零搭建也能快速上手
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意