


Linux培训
达内IT学院
400-996-5531
最近在调试shell和python等脚本,中间遇到一些问题,现记录在此
1. 脚本的exit code
脚本的退出码可以返回给脚本的调用者,读取到不同的code值,可以表明程序是执行成功还是遇到什么类型的错误退出了。
之前不知道这个code的数值范围只有0到255,错误地自定义了一个400的code,在调试过程中发现程序返回了144的code,但我并没有定义过这个code,只能在脚本中添加echo或print语句定位错误发生的地点,最后定位到exit(400)这句,当时很奇怪明明设置的是400返回,echo $?打印出的却是144。
Google了一阵之后发现code的范围只有8位,高于8位的部分被截断了,400的低8位是0x90=144,所以今后自定义code的时候切忌不能超出255的范围,负值的情况也是类似,如-1对应的是255
2. BOM(byte order mark)引起的异常
BOM可以简单的理解为一个文件头,在Windows中可以使用BOM来标记文本文件的字节顺序和编码方式。UTF-8编码的文件中BOM可有可无。
以上是背景,在脚本中调用staf执行stax xml文件的时候有时会抛出异常,主要的提示信息是content is not allowed in prolog,一开始以为是中文编码导致的,没太在意那条信息,但搜索一把后未果。后面还是根据上面的错误信息定位了BOM的问题,在notepad++上进行了文件的转换,如下图,选择convert to UTF-8 without BOM
总之,脚本的调试是个不断echo或者print的过程,没有了强大的IDE帮助后,我们只能简单粗暴外加google大神求助啦。
填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有