UTF-8-BOM导致的脚本解析问题

刚碰到一个问题,我写了一段脚本,然后代码检查了下是没有问题的,但是放到服务器上执行的时候,一直提示我使用的awk命令文件找不到(awk:No such file or directory)
脚本大致这样(服务器上/bin/awk这个文件确实是存在的):

1
2
#!/bin/awk
#下面脚本正文,略

后来找了半天,才发现这个脚本,最终被解析到的文本中,第一行被解析成了:

1
#/bin/awk

少了一个感叹号

原因是我修改文件编码时,改成了UTF-8-BOM编码:
脚本语言通行的首行#!标示,这东西依赖于shell解析,而很多shell出于兼容的考虑不检测BOM,所以加进BOM时shell会把它解释为某个普通字符输入导致破坏#!标示

可以参考这篇文章:http://www.cnblogs.com/findumars/p/3620078.html

大家今后注意,脚本编码一定不要选UTF-8-BOM,应该选无BOM的UTF-8编码。