高端网站开发怎么选,大城网站制作,如何创建一个属于自己的网站,江苏网站建设案例一、学习前提准备
✅ 环境要求#xff1a; Linux系统#xff08;Ubuntu/CentOS等#xff09;或 WSL (Windows用户) 任意文本编辑器#xff08;推荐VSCode/Vim#xff09; 基础命令行操作能力
#x1f50d; 验证环境#xff1a;
# 查看系统默认Shell
echo $SHELL
#…一、学习前提准备
✅ 环境要求 Linux系统Ubuntu/CentOS等或 WSL (Windows用户) 任意文本编辑器推荐VSCode/Vim 基础命令行操作能力 验证环境
# 查看系统默认Shell
echo $SHELL
# 查看Bash版本
bash --version 二、Shell脚本基础认知
2.1 什么是Shell脚本 解释型语言通过/bin/bash逐行解析执行 核心价值 自动化重复性系统操作80%运维工作可脚本化 快速实现任务调度结合cron 提升操作可重复性和精确度
2.2 脚本文件标准结构
#!/bin/bash # Shebang声明必须第1行
# 文件demo.sh # 脚本描述
# 作者CSDN用户 # 维护信息
echo 欢迎学习Shell编程 # 可执行语句 三、首个Shell脚本实战
3.1 创建并运行脚本
# 创建脚本文件建议.sh后缀
touch hello_world.sh
chmod x hello_world.sh # 添加执行权限
3.2 编辑器输入以下代码
#!/bin/bash
# 第一个Shell程序
echo 当前用户$(whoami)
echo 系统时间$(date %F)
3.3 三种执行方式对比
执行方式命令示例适用场景路径直接执行./hello_world.sh已添加执行权限时指定解释器执行bash hello_world.sh调试快速执行source命令执行source hello_world.sh需保留环境变量时 四、核心编程语法精要
4.1 变量操作
companyCSDN社区 # 定义变量等号无空格
readonly version1.0 # 只读变量不可修改
today$(date %Y-%m-%d) # 命令执行结果赋值
echo ${company} ${today} # 建议变量用花括号包裹
4.2 条件分支结构
if [ -f /etc/passwd ]; then # 判断文件存在echo 系统密码文件存在
elif [ -d /tmp ]; then # 判断目录存在echo /tmp目录存在
elseecho 条件未满足
fi
4.3 循环结构
for循环处理文件列表:
for file in *.log; doecho 正在处理日志文件${file}
done
while按行读取文件:
while read line; doecho 当前行$line
done input.txt
4.4 函数定义与调用
# 带返回值函数
file_exists() {[ -f $1 ] return 0 || return 1
}
# 调用函数
file_exists /etc/hosts
if [ $? -eq 0 ]; then # $?获取上一条命令返回值echo 文件存在
fi 五、实用功能模块速查
5.1 参数传递处理
特殊变量含义示例$0脚本名称echo 脚本$0$1-$9第1-9个位置参数echo 第1参数$1$#参数总个数if [ $# -gt 0 ]$所有参数列表for param in $
5.2 退出状态码
check_service() {systemctl is-active nginx /dev/nullreturn $? # 返回上条命令的退出状态
}
check_service
case $? in0) echo 服务运行中;;*) echo 服务异常状态码$?;;
esac
5.3 管道与重定向
# 管道组合命令
cat access.log | grep 404 | awk {print $7}
# 输出重定向
ls -l file_list.txt # 覆盖写入
echo 新增内容 log.txt # 追加写入
# 错误输出处理
apt update 2 /dev/null # 丢弃错误输出 六、自动化实战系统备份脚本
6.1 需求说明 每日凌晨压缩备份/data目录 自动删除30天前的备份文件 记录操作日志
6.2 完整代码实现
#!/bin/bash
# 自动化备份脚本
# 配置参数
backup_dir/data
dest_path/backup
keep_days30
log_file/var/log/backup.log
# 目录检查
[ ! -d $dest_path ] mkdir -p $dest_path
[ ! -f $log_file ] touch $log_file
# 生成压缩包
timestamp$(date %Y%m%d%H%M)
tar -czf ${dest_path}/backup_${timestamp}.tar.gz $backup_dir 21 | tee -a $log_file
# 清理旧备份
find $dest_path -name *.tar.gz -mtime $keep_days -delete 21 | tee -a $log_file
# 日志记录
echo [$(date)] 备份完成保留最近${keep_days}天文件 | tee -a $log_file
6.3 部署到cron计划任务
# 每日凌晨2点执行
crontab -e
# 添加如下行
0 2 * * * /opt/scripts/backup.sh 七、高阶调试技巧
7.1 执行过程追踪
bash -x script.sh # 显示每条执行命令
7.2 代码段调试
set -x # 开启调试模式
# 需要调试的代码
set x # 关闭调试模式
7.3 错误自动退出
#!/bin/bash
set -e # 任何语句返回值非0则立即退出
set -o pipefail # 管道命令出错时也退出 八、学习路线与资源推荐 技能提升路线 掌握正则表达式grep/sed 学习awk高级文本处理 理解Linux信号处理trap 研究Ansible等自动化工具 推荐资料 书籍《Linux命令行与Shell脚本编程大全》 工具ShellCheck在线检测