今天写了一个shell脚本,执行时报错,脚本内容很简单,仅供测试:
#!/bin/bash
echo "hello shell."
具体报错信息如下:
-bash: ./test.sh: /bin/bash^M: bad interpreter: No such file or directory
主要原因是.sh在Windows下编辑创建后copy到Linux系统里执行错误,因为.sh文件在Windows下创建后的格式为dos格式,而Linux只能执行格式为unix格式的脚本。通过vi编辑器来查看文件的format格式。
1.用vi命令打开文件
server@server-R720:~/work$ vi test.sh
2.在vi命令模式中使用
:set ff
可以看到改文件的格式为dos
fileformat=dos
3.修改文件format为unix
方法一:使用:set ff命令
:set ff=unix
执行完后再通过set ff命令查看文件格式。
方法二:使用dos2unix命令
server@server-R720:~/work$ dos2unix test.sh
Command ‘dos2unix’ not found, but can be installed with:
sudo apt install dos2unix
按提示安装工具后再次执行命令。
server@server-R720:~/work$ dos2unix test.sh
dos2unix: converting file test.sh to Unix format…
最后运行.sh
server@server-R720:~/work$ ./test.sh
hello shell.