在Windows下寫了一個shell腳本,上傳到Linux下執行時報錯:
復制代碼 代碼如下:
[root@localhost test]# ./test.sh
-bash: ./test.sh: /bin/sh^M: bad interpreter: No such file or directory
test.sh源碼:
復制代碼 代碼如下:
#!/bin/sh
echo "test shell "
由于自己對shell不太熟悉,找同事溝通了后了解了原委,主要原因是test.sh是我在windows下編輯然后上傳到linux系統里執行的。.sh文件的格式為dos格式。而linux只能執行格式為unix格式的腳本。因為在dos/window下按一次回車鍵實際上輸入的是“回車(CR)”和“換行(LF)”,而Linux/unix下按一次回車鍵只輸入“換行(LF)”,所以修改的sh文件在每行都會多了一個CR,所以Linux下運行時就會報錯找不到命令。
我們可以通過vi編輯器來查看文件的format格式。步驟如下:
1.首先用vi命令打開文件
[root@localhost test]# vi test.sh
2.在vi命令模式中使用 :set ff 命令
可以看到改文件的格式為
復制代碼 代碼如下:
fileformat=dos
3.修改文件format為unix
使用vi/vim修改文件format
命令::set ff=unix
或者::set fileformat=unix
然后:wq保存退出就可以了
您可能感興趣的文章:- PowerShell中獲取Windows系統序列號的腳本分享
- Windows Powershell 執行文件和腳本
- PowerShell腳本中控制Windows DNS服務的方法
- linux和windows下的自動ftp腳本(shell bat)
- 下一代Shell腳本語言,Windows Power Shell!
- windows下上傳shell腳本不能運行的解決方法