最近在编写一些shell脚本,但是很惊讶的发现,编写好的脚本提示:No such file or directory 。于是把shell中的语句单独复制出来运行,一点问题都没有,而放在shell中运行就找不到路径,百思不得其解。
在上网搜寻问题后,得出问题原因:shell是我在windows中编写然后上传到linux服务器的,在dos中编写的换行是\r\n,而Linux中换行是\n。
问题查看:
1、查看你的shell或者文件是否存在类似编码错误:head -1 yourscript | od -c
如果结果是# !/bin/bash\r\n 确认编码问题,正确应为:# !/bin/bash\n
2、使用vim查看:vim yourscript
:set ff
结果为dos 或 unix
问题解决:
1、可以使用Linux的dos2unix和unix2dos软件,很简单和名字一个意思,dos编码转至unix编码,另一个则相反。
命令如下: dos2unix yourscript
如果提示命令不存在,则可以安装一个,apt-get install dos2unix
2、在vim中直接设置:set ff=unix,然后:wq保存退出。
在这分享一篇vim命令总结,很全,传送门:https://blog.youkuaiyun.com/shudaqi2010/article/details/53930580
本文介绍了一种常见的Shell脚本错误——由于Windows和Linux系统间换行符不一致导致的问题。文中详细解释了如何检查和修正这个问题,并提供了实用的解决方案。
1万+

被折叠的 条评论
为什么被折叠?



