Shell调试
2015-12-08 17:44
399 查看
Shell 调试
在我们进行Shell编写后,运行后错误,或者想知道执行shell文件过程是怎样的,我们可以运用Shell调试的方法来读取执行过程。例如,现有一个Shell文件 test.sh
#!/bin/bash a=(1 2 3 4 5) for i in ${a[@]} do echo $i
1 检查语法错误
-n 选项只做语法检查,而不执行脚本。bash -n test.sh
在检查语法后,发现原shell文件中 有错误,第7行缺失 done
现在将这个test.sh 修改为如下:
#!/bin/bash a=(1 2 3 4 5) for i in ${a[@]} do echo $i done
2 启动调试
bash -x test.sh
进入调试模式后,Shell依次执行读入的语句,产生的输出中有的带加号,有的不带,如下。带加号表示该条语句是Shell执行的。不带加号表示该语句是Shell产生的输出。
3 中断调试
在调试过程中可以按Ctrl + Z中断调试,观察结果,然后再按f9键继续调试即可。4 调试代码块
上面的-x选项是调试整个脚本的,如果脚本很大,会很不方便,还有一种方法是调试某一块代码的,如下set -x ... code block ... set +x
这样,只对set -x与set +x之间的代码进行跟踪。
5 调试函数
set -x Function call set +x
常见错误诊断
xxx.sh: cannot shift
这种错误一般是参数传递有误,比如没有给参数,或者参数个数少了。因为shell脚本使用shift来获取下一个参数,如果个数不对,shift命令就会失败。
xxx.sh: ^M: not found
^M是Windows上的回车符\r在UNIX上的显示形式。这种情况多半是在Windows上编辑了shell脚本,然后拿到UNIX/Linux上执行。只要将文件中所有的\r删除即可。
tr -d "\r" <oldfile.sh > newfile.sh
或者一个更标准的方法,因为\r的ASCII码是\015,所以可以这样。
tr -d "\015" < oldfile.sh > newfile.sh
相关文章推荐
- android wifi 无线调试
- 运维入门
- Linux 自检和 SystemTap
- 动态清空 nohup 输出文件
- install scrapy with pip and easy_install
- Linux Shell常用技巧
- Shell 脚本编程陷阱
- Python 七步捉虫法
- shell字符串操作详解
- 路由器的配置与调试
- 对于技术人员的出现了运行时间错误,是否要进行调试的解决方法
- Shell中删除某些文件外所有文件的3个方法
- Ruby中执行Linux shell命令的六种方法详解
- VB使用shell函数打开外部exe程序的实现方法
- Shell编程的一些知识集合
- Shell中的for和while循环详细总结
- 什么是Shell?Shell脚本基础知识详细介绍
- Shell脚本中引用、调用另一个脚本文件的2种方法
- Shell脚本解压rpm软件包
- Linux Shell 数组建立及使用技巧