windows下写的Shell脚本 Linux下无法执行解决方法

  不知道从什么时候开始,突然发现在windows下写的Shell脚本同步到github后,从linux服务器下载运行的时候总是出错,开始以为是代码本身有问题,后来发现不是,是因为换行符编码不能识别,windows是 ' \r\n ' linux 是 ' \n '。


  

  如上图,一般我们正常使用notepad++或是notepad写的代码是windows UTF-8格式,左侧显示windows(CR LF),这种情况下代码上传后在Linux下是不能直接执行的。


解决方法:

1.写代码时直接转成UNIX

  

  以notepad++为例,双击下边的windows(CR LF)就弹出上图转换按钮。


2.使用vim或vi转换

  如果linux中下载了windows编码的脚本,可以直接在VIM中 set ff=unix,告诉 vim 编辑器使用unix换行符,然后保存退出后就可以执行了。


3.使用github或linux sed命令转换

  有时候我们使用windows记事本书写代码然后上传到github,此时我们可以在github bash中直接转换,命令如下:  

sed -i 's/\r$//' test.sh

  Linux下也一样,除了 set ff=unix外,也可以使用sed转换。

AD: 腾讯云 1核2G云服务器首年38元
推广推荐

Proudly Powered By WordPress | IEWB.NET 2009-2024 版权所有