javascript - 脚本从windows上传到linux无法执行
天蓬老师
天蓬老师 2017-04-10 15:28:55
0
8
387

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

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

모든 응답(8)
PHPzhong

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

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

迷茫

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

黄舟

vim 打开 set ff=unix

PHPzhong

会不会是utf-8 的bom问题

巴扎黑

也许是换行符的问题,参考我的这个提问:
怒了!文件明明存在,却提示找不到,这是什么鬼?


PS:解决方案跟楼上 @苏生不惑 提供的一样。

左手右手慢动作

方法有很多:

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

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

PHPzhong

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿