温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何查Shell脚本运行错误

发布时间:2026-11-08 19:12:31 来源:亿速云 阅读:100 作者:小樊 栏目:系统运维

查 Shell 脚本运行错误,通常可以从语法检查、运行调试、日志输出、常见错误点几个方面入手。下面按“从简单到深入”的方式总结。


一、先做语法检查(不改运行逻辑)

不用真正执行脚本,只检查语法:

bash -n script.sh
  • 有语法错误会直接报出来
  • 不会执行任何命令,很安全

二、打开调试模式(最常用)

1️⃣ 执行时调试

bash -x script.sh

会显示:

  • 每一条实际执行的命令
  • 变量展开后的结果

示例输出:

+ echo Hello
Hello

2️⃣ 在脚本内部开启调试

在脚本顶部加:

set -x

只在某一段调试:

set -x
# 怀疑有问题的代码
set +x

三、让脚本“遇错即停”(非常重要)

很多脚本错误是因为前面失败还在继续跑。

在脚本开头加:

set -euo pipefail

含义:

  • -e:命令失败立即退出
  • -u:使用未定义变量直接报错
  • -o pipefail:管道中任意命令失败都算失败

四、查看错误信息 & 退出码

1️⃣ 查看上一条命令是否失败

echo $?
  • 0 表示成功
  • 非 0 表示失败

2️⃣ 在脚本中捕获错误

command || echo "命令执行失败"

或更严谨:

if ! command; then
  echo "出错啦" >&2
  exit 1
fi

五、打印变量和状态(手动调试)

echo "VAR=$VAR"

或:

set -x
echo "$PATH"
set +x

⚠️ 注意:

echo "$var"   # 正确
echo $var     # 容易出问题

六、常见 Shell 脚本错误点

1️⃣ 变量未加引号

❌

rm -rf $dir/

✅

rm -rf "$dir"/

2️⃣ 空格问题

❌

if[$a -eq 1]

✅

if [ "$a" -eq 1 ]

3️⃣ 权限问题

chmod +x script.sh

4️⃣ 解释器不对

脚本第一行:

#!/bin/bash

而不是:

#! /bin/sh

(某些系统 sh ≠ bash)


七、复杂脚本的调试技巧

1️⃣ 分段执行

bash -x script.sh 2>debug.log

2️⃣ 使用 trap 捕获错误

trap 'echo "错误发生在行 $LINENO"' ERR

八、推荐排查顺序(实战)

  1. bash -n 查语法
  2. bash -x 看执行过程
  3. set -euo pipefail 防隐藏错误
  4. 检查变量、路径、权限
  5. 看 $? 和错误输出

如果你愿意,可以把具体脚本或报错信息贴出来,我可以直接帮你定位问题。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手