UTF-8-BOM导致的脚本解析问题
刚碰到一个问题,我写了一段脚本,然后代码检查了下是没有问题的,但是放到服务器上执行的时候,一直提示我使用的awk命令文件找不到(awk:No such file or directory)
脚本大致这样(服务器上/bin/awk这个文件确实是存在的):
1 | |
后来找了半天,才发现这个脚本,最终被解析到的文本中,第一行被解析成了:
1 | |
少了一个感叹号
原因是我修改文件编码时,改成了UTF-8-BOM编码:
脚本语言通行的首行#!标示,这东西依赖于shell解析,而很多shell出于兼容的考虑不检测BOM,所以加进BOM时shell会把它解释为某个普通字符输入导致破坏#!标示
可以参考这篇文章:http://www.cnblogs.com/findumars/p/3620078.html
大家今后注意,脚本编码一定不要选UTF-8-BOM,应该选无BOM的UTF-8编码。