专栏首页大数据-数据人生Linux脚本的bom格式开头

Linux脚本的bom格式开头

最近在使用shell脚本处理问题的时候,发现脚本莫名其妙的报错,脚本代码如下:

[hduser06@bdphdp010001 0.0.0]$ cat bom.sh 
?#!/bin/sh

echo 'start export data to sas'

    但是在vi该脚本的时候,却发现:

#!/bin/sh

echo 'start export data to sas'

    该脚本是完全正常的,执行的时候报错如下:

[hduser06@bdphdp010001 0.0.0]$ sh bom.sh 
bom.sh: line 1: ?#!/bin/sh: No such file or directory
start export data to sas

    仔细观察下,原来该脚本不小心带了bom文件头。检查一个文件是否带bom头,可以如下检查:

[hduser06@bdphdp010001 0.0.0]$ hexdump -C bom.sh | head 
00000000  ef bb bf 23 21 2f 62 69  6e 2f 73 68 0a 0a 65 63  |...#!/bin/sh..ec|
00000010  68 6f 20 27 73 74 61 72  74 20 65 78 70 6f 72 74  |ho 'start export|
00000020  20 64 61 74 61 20 74 6f  20 73 61 73 27 0a 0a     | data to sas'..|
0000002f

    这里可以看到bom.sh文件前头有...,这个文件头明显是多余的,这里可以去掉。在windows下可以用notepad和UE都可以去掉。在Linux下,

可以使用如下命令,查出当前所有的带bom的文件列表:

grep -r -I -l $'^\xEF\xBB\xBF' ./

    去掉所有带bom头的文件:

find . -type f -exec sed -i 's/\xEF\xBB\xBF//' {} \;

    重新执行脚本,即可正常执行。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 引入HBase依赖包带来的麻烦

    在一个项目里用到HBase做底层存储,使用maven来管理相关Jar包依赖,用maven来管理依赖包,特别不爽的就是他会将你引入Jar包自己的依赖都搞进来,经常...

    幽鸿
  • 百度地图API开发指南(二)

    除了指定停靠位置外,还可以通过偏移量来指示控件距离地图边界有多少像素。如果两个控件的停靠位置相同,那么控件可能会重叠在一起,这时就可以通过偏移值使二者分开显示。

    幽鸿
  • eclipse+Tomcat热部署方案

        今天这里要和大家推荐的是一款解决eclipse+tomcat热部署的插件,这款插件是我同学推荐给我的,还不错,名叫Jrebel,这是一款商业插件。这里给...

    幽鸿
  • 企业遇上SSL DDOS该采取的有效防御措施有?

    现在有很多的用户选择ddos防护安全公司的首要条件就是接入方便,价格便宜,还要拥有专业的技术,24小时服务等等要求。导致出现了越来越多鱼龙混杂的安全防护公司,他...

    墨者盾
  • java学习笔记(基础篇)—IO流

    流就是一个对象。所在的包java.io.*,Java I/O系统负责处理程序的输入和输出,java.io包它对各种常见的输入流和输出流进行了抽象。

    chlinlearn
  • java学习笔记(基础篇)—IO流

    流就是一个对象。所在的包java.io.*,Java I/O系统负责处理程序的输入和输出,java.io包它对各种常见的输入流和输出流进行了抽象。

    chlinlearn
  • 选WhatsApp Business还是 WhatsApp Business API?

    品牌出海,一个重要的命题是建立与本地用户的沟通连接。移动互联网发展迅速的今天,各种即时通讯工具无疑是品牌需要主力投入建设的最重要的沟通渠道。下图最新数据显示排名...

    Darko
  • 2017最受欢迎人工智能编程语言:Python第一,R并未上榜

    【新智元导读】人工智能(AI)已经成为一个热门话题,也是一个大的研究领域,每个巨头科技公司以及创业公司都在其中努力。这是一个非常广泛的话题,从基本的计算器、自我...

    新智元
  • 通过shell脚本监控sql执行频率(r3笔记第50天)

    在生产环境中,可能会存在各种潜在的sql问题,比如由于硬件资源导致,如果影响到了IO,CPU,就会导致一些本来运行很快的sql语句变慢或者系统响应严重减缓。 比...

    jeanron100
  • 设置输入延时约束

    这是一个经典的时序分析模型,上游芯片将时钟发送给FPGA,对于内部同步元件之间的可以使用create_clock进行约束,对于外部芯片发送数据通过FPGA端口到...

    瓜大三哥

扫码关注云+社区

领取腾讯云代金券