脚本从windows上传到linux无法执行

在本地windows,写了个sh脚本,用filezilla,sftp协议上传到center os下,权限777,但是执行总是报错,没有修改过任何字母,在centeros下重新创建了个sh文件,把内容复制进去,然后就可以正常运行了,完全不懂这是为何,把两个文件下载下来对比的编码格式是一样的,求各位解答,实在是困惑!

阅读 8.2k
8 个回答

该问题已确认为编码问题,在notepad++中编辑时虽然是以utf8格式编码,但是还有个地方是需要转码的,windows和linux/unix的换行和空行符是不同的,所以在windows下编辑的脚本放到linux上就运行不了了,后查到在notepad++中可以进行转码。
某notepad++教程网站上的截图(侵删)

这样转码之后再上传到linux就可以正常运行了,不过网上也有说是上传工具的问题之类的说法,我用的是filezilla没有设置过什么东西都是下载就用,暂时没发现上传工具有什么影响。
各位答主所说的方法并没有每个都试过(抱歉了),再次看到邮件提醒有问题在这儿,赶紧过来贴出解决方法!

掐指一算,估计是编码问题,可以使用iconv 转码一下 就是从gb2312转到utf-8,下载下来编码一样是不是因为系统或者下载器的问题?

vim 打开 set ff=unix

会不会是utf-8 的bom问题

方法有很多:

  1. 采用 @苏生不惑 提供的方法,用vim改文件
  2. 使用dos2unix命令
  3. 使用sed -i 's/\r//' CRLF.txt

哥们你也不贴出来报的什么错

在windows上编写的shell脚本放到linux中执行时建议用命令 set fileformats='unix'格式化语言

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题