Shell脚本调试
程序的编写不可能总是一帆风顺,尤其是编写的程序较长或较复杂时,极其可能出现各种各样的错误。C语言等高级语言的许多编辑器中都提供了编译调试工具,以便在程序执行前对程序进行编译和调试,Shell脚本程序也不例外。
Shell中提供了一些选项,用于shell脚本的调试过程。shell脚本中常用于调试的选项为:-n、-v、-x,对应选项的功能分别如下:
● -n。不执行脚本,仅检查脚本中的语法问题;
● -v。在执行脚本的过程中,将执行过的脚本命令打印到屏幕;
● -x。将用到的脚本内容打印到屏幕上。
下面结合案例,分别演示这些选项的使用方法。
案例11:利用脚本case_test(3.4.3中案例6)测试-n选项的用法。
[itheima@localhost ~]$ sh -n case_test
因为脚本case_test中不存在语法问题,因此屏幕上没有内容输出。假设此时我们将“*) echo "error"”处的右引号删除,再次执行检测语句,则会在屏幕打印出如下内容:
[itheima@localhost ~]$ sh -n case_test
case_test: line 13: unexpected EOF while looking for matching `"'
case_test: line 16: syntax error: unexpected end of file
案例12:利用脚本if_elif(3.4.2中案例4)测试-v选项的用法。
[itheima@localhost ~]$ sh -v if_elif
#!/bin/sh
read filename
a
if [ -d $filename ];then
ls $filename
elif [ -x $filename ];then
echo "This is a executable file."
else
echo "This is not a executable file."
fi
This is't a executable file.
exit 0
图中带下划线的内容,为用户根据提示输入的内容;以“+”开头的内容为本次执行过程中使用到的命令;黑色加粗的内容为脚本程序输出的内容。用户输出的内容穿插在脚本内容之间,终端打印的信息包含脚本程序中的全部内容。
案例13:利用脚本case_test测试-x选项的用法。
[itheima@localhost ~]$ sh -x if_elif
+ read filename
a
+ '[' -d a ']'
+ '[' -x a ']'
+ echo 'This is not a executable file.'
This is't a executable file.
+ exit 0
图中带下划线的内容为用户根据提示输入的内容;以“+”开头的内容为本次执行过程中使用到的命令;黑色加粗的内容为脚本程序输出的内容。由案例13中打印的信息可知,-x选项只会打印程序执行过程中用到的代码。