shell 调试
2015-07-05 20:47
447 查看
检查语法
-n选项只做语法检查,而不执行脚本。sh -n script_name.sh
启动调试
sh -x script_name.sh [code]#这里也可以在脚本中指定开启。如可以在script_name.sh中的这样一句:set -x
[/code]
进入调试模式后,Shell依次执行读入的语句,产生的输出中有的带加号,有的不带,如下。带加号表示该条语句是Shell执行的。不带加号表示该语句是Shell产生的输出。
+ array=(1 2 3 4 5) + for i in '${array[*]}' + echo 1 1
中断调试
在调试过程中可以按Ctrl + Z中断调试,观察结果,然后再按fg键继续调试即可。调试代码块
上面的-x选项是调试整个脚本的,如果脚本很大,会很不方便,还有一种方法是调试某一块代码的,如下set -x ... code block ... set +x
这样,只对set -x与set +x之间的代码进行跟踪。
调试函数
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
相关文章推荐
- xshell的上传和下载命令
- Linux - Shell基本命令
- shell学习----小结
- shell学习三十九天----内建命令
- shell学习三十八天----执行顺序和eval
- 禁止右键git bash
- Shell的输入输出
- Shell入门第一课
- shell中的函数参数
- CentOS6.5安装Tab增强版:bash-completion
- shell脚本执行的区别
- Perl调用shell命令方法小结
- 鸟哥的Linux私房菜-----12、学习使用Shell scripts
- shell中的文件处理
- 3个开源的 Python Shell
- linux 环境变量笔记及bash操作
- android 常用adb 和 adb shell 命令 获取root权限
- Debian7离线升级bash漏洞—然后修复方法
- Shell脚本--并发执行
- shell脚本中顺序执行另几条shell命令