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