Linux Shell调试技巧讲解_Linux排查脚本报错的方法
发布时间 - 2025-12-13 00:00:00 点击率:次Shell脚本调试靠五种基础手段:用bash -n检查语法、-x开启执行跟踪、检查$?状态码、变量加双引号、启用set -euo pipefail严格模式,可覆盖90%日常问题。
Shell脚本出错时,别急着重写,大多数问题靠几条基础调试手段就能快速定位。关键不是“猜”,而是让脚本自己“说话”。
用 -n 检查语法,不执行也能发现问题
这是最安全的第一步:只读脚本、不运行,专查语法硬伤。
-
命令写法:
bash -n script.sh—— 报错行号直接指出
缺引号、少fi、括号没闭合等 - 比如
echo "Today's Date: $(date)少了一个",-n会立刻提示unexpected EOF - 适合在修改后、提交前或部署前做快速“体检”
用 -x 开启执行跟踪,看清每一步怎么跑的
当脚本能跑但结果不对,或者中途静默退出,-x就是你的“慢动作回放”。
-
两种用法:
bash -x script.sh(临时调试) 或脚本开头加set -x(局部启用) - 输出里每行带
+号,显示变量实际展开值,比如+ cp /tmp/file.txt /home/user/,一眼看出路径是否拼错 - 搭配
set +x可关闭某段跟踪,避免信息过载
检查变量和状态码,揪出空值与失败命令
很多报错其实不是语法问题,而是变量为空、文件不存在、命令失败却没处理。
- 用
[ -z "$var" ]判断变量是否为空,避免rm $file变成rm(删当前目录) - 始终用双引号包裹变量:
"$file"而不是$file,防止含空格路径被拆成多个参数 - 执行关键命令后立刻看
$?:cp source dest || { echo "cp failed: $?"; exit 1; }
加防御性检查,把错误挡在发生前
与其等报错再修,不如提前拦住常见坑。
- 创建目录前加
[ ! -d "$dir" ] && mkdir -p "$dir" - 读文件前加
[ -f "$input" ] || { echo "输入文件不存在"; exit 1; } - 脚本开头加
set -euo pipefail(严格模式):未定义变量、命令失败、管道中间出错都会立即终止
基本上就这些。不需要复杂工具,-n、-x、$?、引号和set -euo pipefail这五样,覆盖了90%的日常排查场景。
# linux
# 工具
# ai
# 状态码
# shell脚本
# bash
# echo
# EOF
# date
# var
# 严格模式
# input
# 报错
# 不存在
# 行号
# 为空
# 这是
# 双引号
# 就能
# 多个
# 不需要
# 两种
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
使用豆包 AI 辅助进行简单网页 HTML 结构设计
网站制作大概多少钱一个,做一个平台网站大概多少钱?
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
如何在阿里云购买域名并搭建网站?
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
长沙企业网站制作哪家好,长沙水业集团官方网站?
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
昵图网官方站入口 昵图网素材图库官网入口
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
Android okhttputils现在进度显示实例代码
如何获取上海专业网站定制建站电话?
Linux网络带宽限制_tc配置实践解析【教程】
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
晋江文学城电脑版官网 晋江文学城网页版直接进入
千库网官网入口推荐 千库网设计创意平台入口
微信小程序制作网站有哪些,微信小程序需要做网站吗?
实例解析angularjs的filter过滤器
如何实现javascript表单验证_正则表达式有哪些实用技巧
太平洋网站制作公司,网络用语太平洋是什么意思?
原生JS实现图片轮播切换效果
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
Laravel如何使用Blade模板引擎?(完整语法和示例)
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
如何生成腾讯云建站专用兑换码?
如何在万网利用已有域名快速建站?
香港服务器选型指南:免备案配置与高效建站方案解析
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
Android实现代码画虚线边框背景效果
Python面向对象测试方法_mock解析【教程】
青岛网站建设如何选择本地服务器?
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
如何用AI帮你把自己的生活经历写成一个有趣的故事?
PythonWeb开发入门教程_Flask快速构建Web应用
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何在IIS中配置站点IP、端口及主机头?
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
*服务器网站为何频现安全漏洞?
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
手机网站制作与建设方案,手机网站如何建设?
Firefox Developer Edition开发者版本入口
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
python中快速进行多个字符替换的方法小结
Laravel如何优化应用性能?(缓存和优化命令)


缺引号、少fi、括号没闭合等