Shell本身提供一些调试方法选项:
- -n,读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。
- -v,一边执行脚本,一边将执行过的脚本命令打印到标准输出。
- -x,提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。
使用这些选项有三种方法(注意:避免几种调试选项混用)
1.在命令行提供参数:
$sh -x debug.sh
#!/bin/bash
#批量将 PNG 图片转换成 JPG 格式
for image in *.png; do
convert "$image" "${image%.png}.jpg"
echo "image $image converted to ${image%.png}.jpg"
done
exit 0
chmod +x debug.sh
# 执行脚本并显示它被 Shell 读取到的每一行:
bash -v debug.sh
#!/bin/bash
# 批量将 PNG 图片转换成 JPG 格式
# script whith a bug
for image in *.png;
do
convert "$image" "${image%.png}.jpg"
echo "image $image converted to ${image%.png}.jpg"
# done
exit 0
bash -n debug.sh
bash -vn debug.sh
2.脚本开头提供参数:
#!/bin/sh -x
3.在脚本中用set命令启用or禁用参数:
set -x # 表示启用
调试部分的代码块
set +x # 表示禁用
#!/bin/bash
#批量将 PNG 图片转换成 JPG 格式
#using set shell built-in command to enable debugging
#enable debugging
set -n
for image in *.png; do
convert "$image" "${image%.png}.jpg"
echo "image $image converted to ${image%.png}.jpg"
#disable debugging
set +n
exit 0