查 Shell 脚本运行错误,通常可以从语法检查、运行调试、日志输出、常见错误点几个方面入手。下面按“从简单到深入”的方式总结。
不用真正执行脚本,只检查语法:
bash -n script.sh
bash -x script.sh
会显示:
示例输出:
+ echo Hello
Hello
在脚本顶部加:
set -x
只在某一段调试:
set -x
# 怀疑有问题的代码
set +x
很多脚本错误是因为前面失败还在继续跑。
在脚本开头加:
set -euo pipefail
含义:
-e:命令失败立即退出-u:使用未定义变量直接报错-o pipefail:管道中任意命令失败都算失败echo $?
0 表示成功0 表示失败command || echo "命令执行失败"
或更严谨:
if ! command; then
echo "出错啦" >&2
exit 1
fi
echo "VAR=$VAR"
或:
set -x
echo "$PATH"
set +x
⚠️ 注意:
echo "$var" # 正确
echo $var # 容易出问题
❌
rm -rf $dir/
✅
rm -rf "$dir"/
❌
if[$a -eq 1]
✅
if [ "$a" -eq 1 ]
chmod +x script.sh
脚本第一行:
#!/bin/bash
而不是:
#! /bin/sh
(某些系统 sh ≠ bash)
bash -x script.sh 2>debug.log
trap 捕获错误trap 'echo "错误发生在行 $LINENO"' ERR
bash -n 查语法bash -x 看执行过程set -euo pipefail 防隐藏错误$? 和错误输出如果你愿意,可以把具体脚本或报错信息贴出来,我可以直接帮你定位问题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。