将在Windows环境下编写的sh文件格式转化为Linux下的sh文件

先演示一个翻车的现场:

这个是在Linux下编写的一个shell(B)脚本:

将在Windows环境下编写的sh文件格式转化为Linux下的sh文件

运行看看:
将在Windows环境下编写的sh文件格式转化为Linux下的sh文件

没问题,现在在Windows下编写一个:

将在Windows环境下编写的sh文件格式转化为Linux下的sh文件

保存后上传至虚拟机,运行发现居然报错了:
将在Windows环境下编写的sh文件格式转化为Linux下的sh文件

查看一下test.sh内容:

将在Windows环境下编写的sh文件格式转化为Linux下的sh文件

根本没什么问题啊,这时候再用cat -A查看看看:

将在Windows环境下编写的sh文件格式转化为Linux下的sh文件

cat -A是查看文件中的所有内容,包括隐藏字符!

在Linux中回车符识别为$符号,但是在test.sh文件中由于是在Windows下编写的,回车为^M$,所以就发生了格式不匹配,无法执行脚本。

将Windows格式转化为Linux格式

其实很简单,执行一个命令dos2unix即可:

将在Windows环境下编写的sh文件格式转化为Linux下的sh文件

额,我这里没有,安装一下:

将在Windows环境下编写的sh文件格式转化为Linux下的sh文件

cat -A看看:

将在Windows环境下编写的sh文件格式转化为Linux下的sh文件

发现格式已经转换过来了,可以直接执行了:

将在Windows环境下编写的sh文件格式转化为Linux下的sh文件