问题:最近编写shell脚本,遇到直接执行shell脚本怎么也不成功,但是在控制台输入命令就能执行成功,报错如下图所示:
执行shell脚本报错,但控制台执行正常
脚本内容如下:
执行shell脚本报错,但控制台执行正常
脚本实现功能很简单,且语法也没问题,但是运行脚本就报错,经过艰苦排查,发现问题在于 filebeat_kill.sh 是我在windows下编辑然后上传到linux系统里执行的。.sh文件的格式为dos格式。而linux只能执行格式为unix格式的脚本。

我们可以通过vi编辑器来查看文件的format格式。步骤如下:

1.首先用vi命令打开文件:vi filebeat_kill.sh
2.在vi命令模式中输入 :set ff 然后回车,如下图:
执行shell脚本报错,但控制台执行正常
结果显示文件的格式为dos:
执行shell脚本报错,但控制台执行正常
3.修改文件format为unix

使用vi修改文件format,命令 :set ff=unix,回车
执行shell脚本报错,但控制台执行正常
4.修改完成后,查看文件格式已改为unix
执行shell脚本报错,但控制台执行正常
再次执行 ./filebeat_kill.sh,执行成功
执行shell脚本报错,但控制台执行正常

相关文章: