#!/bin/bash
_X=1
while [[ ${_X} -le 10 ]]
do
[[ ${_X} -lt 5 ]] && echo "X is less than 5!"
_Y=`expr ${_X} + 1`
if [[ ${_Y} -eq 6 ]]
then
echo "Y is now equal to ${_Y}"
fi
_X=${_Y}
done
再次运行这个脚本:
# ./make_errors
X is less than 5!
X is less than 5!
X is less than 5!
X is less than 5!
Y is now equal to 6
恭喜!这个脚本现在正常工作了!
set -x 选项
有时候,对 shell 脚本执行基本的错误排除步骤并不像前一个示例那么容易。如果所有努力都失败了,并且想不出脚本的错误之处在哪里,那么最后一招就是动用 “杀手锏!Ksh、Bash 和其他现代 shell 都支持在 set 命令中使用 -x 开关。如果使用 set –x 选项,执行的每个命令都显示在 stdout 中。为了突出显示执行的代码,set –x 把 PS4 变量的值加在显示的每行代码前面。请记住,这种做法会产生大量文本,所以在查看输出时要有耐心。
减小前一个示例中的循环计数值,在脚本的开头添加 set -x 和一个注释,见清单 12。
清单 12. set -x 示例
#!/bin/bash
set -x
# loop through and display some test statements
_X=1
while [[ ${_X} -le 4 ]]
do
[[ ${_X} -lt 2 ]] && echo "X is less than 2!
_Y=`expr ${_X} + 1`
if [[ ${_Y} -eq 3 ]]
then
echo "Y is now equal to ${_Y}"
fi
_X=${_Y}
done
标签: