ubantu 執行 sh 指令碼的問題

2022-08-24 02:27:11 字數 955 閱讀 9829

一些人喜歡用vim來寫linux shell script, 但是, 有的人喜歡在windows下用一些方便的編輯器(比如鼎鼎大名的notepad++)寫好, 然後拷貝檔案到linux下, 結果呢, 在執行指令碼a.sh的時候, 會出現如下問題:

[plain] view plain

copy

[taoge@localhost learn_shell]$ ./a.sh   

bash: ./a.sh: /bin/bash^m: bad interpreter: no such file or directory  

[taoge@localhost learn_shell]$   

什麼原因呢, 我們有理由懷疑是檔案格式問題? 我們用vim a.sh進入a.sh這個檔案, 然後在底部模式下, 執行:set ff檢視一下, 結果發現fileformat=dos, 看看, 果然是檔案格式問題, 那怎麼解決呢?

方法一:vim a.sh進入a.sh後, 在底部模式下, 執行:set fileformat=unix後執行:x或者:wq儲存修改。 然後就可以執行./a.sh執行指令碼了。(我親自試過, 是ok的)

方法二:直接執行sed -i "s/\r//" a.sh來轉化, 然後就可以執行./a.sh執行指令碼了。(我親自試過, 是ok的)

方法三:直接執行dos2unix a.sh來轉化, 然後就可以執行./a.sh執行指令碼了。(我的linux上執行dos2unix ./a.sh失敗, 但是不要放棄啊, 加個busybox就可以了), 如下:

[plain] view plain

copy

dos2unix a.sh   

bash: dos2unix: command not found  

[taoge@localhost learn_shell]$ busybox dos2unix a.sh   

[taoge@localhost learn_shell]$  

乙個sh指令碼 同時執行 多個sh指令碼

原來的啟動方式 cd opt openimscore pcscf.sh icscf.sh scscf.sh cd opt openimscore fhoss deploy startup.sh太過麻煩了,希望只執行乙個指令碼啟動所有的指令碼。在 opt openimscore 下,用乙個指令碼進行啟...

linux開機自動執行 sh指令碼

bin sh chkconfig 2345 20 80 description server reboot.execute auto.sh client post port 80 redirect 9527 sudo iptables a prerouting t nat i eth0 p tcp ...

如何執行 sh指令碼檔案

最近在閱讀其他大佬的 時發現了.sh這個指令碼檔案,這個檔案中包含了與預設情況不同的自定義的超引數,如圖所示 在這個檔案的開頭部分會有乙個綠色的小箭頭,當把滑鼠放到上面的時候,會顯示出 run file,意思就是執行該程式 檢視指令碼檔案中的整體內容,我們可以發現其實就是在linux命令 況下執行程...