Shell提供了一些用于调试脚本的选项,如:
-n 读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。
-x 提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。
-v 一边执行脚本,一边将执行过的脚本命令打印到标准错误输出(我理解的应该是为了达到无缓冲的目的)。
关于-x的使用方法:(指的三选一,并不是说比如在方法1中传入-x参数,才可以使用方法3)
1.在命令行提供参数。如:
$ sh -x about_x.sh
2.在脚本开头提供参数。如:
#!/bin/sh -x
(方法1和2默认所有行都会进行命令输出)
3.在脚本中用set命令启用或禁用参数,起到一个开关的作用,提取出关心的部分。
set -x和set +x分别表示启用和禁用-x参数,这样可以只对脚本中的某一段进行跟踪调试。
例:about_x.sh
#! /bin/sh
echo start
set -x
echo aa
set +x
echo bb
echo cc
echo dd
set -x
echo ee
set +x
echo ff
exit 1
执行 sh about_x.sh
注意,这里并没有传入参数-x。输出结果为
start
+ echo aa //开启时不提示set -x,只输出了对应的命令
aa
+ set +x //关闭时提示
bb
cc
dd
+ echo ee //再次开启
ee
+ set +x //再次关闭,提示
ff