1. 程式人生 > >shell指令碼報錯

shell指令碼報錯

報錯——syntax error near unexpected token

1. 這是因為在Windows中的回車符在Linux中被表示為了 ^M ,使用二進位制模式開啟指令碼:

  • vim -b monitor.sh

我們會發現在每行的末尾都會有一個 ^M,如果消滅 ^M 呢?我們想到了幾種方法,其一就是使用 sed 命令:

  • sed -i 's/^M//' monitor.sh
這裡的^M是由 ctrl+v 和 ctrl+m 生成ctrl+v 組合鍵使下一個特殊字元可以插入在當前位置, 如先按 ctrl+v 再按ctrl+s 可以在當前位置插入一個 ^S 字元。

2. 另一個去除 ^M 的方法就是使用vim中的替換功能:

  • vim -b monitor.sh    以二進位制模式開啟指令碼
  • :%s/^M//g             去除^M
  • shift+z+z                 儲存退出
shift+z+z是vim的儲存退出命令,以上命令請手敲,任何有替換功能的命令都可以完成以上操作。

3. 當然會產生這種錯誤的原因是因為該指令碼是在Windows下編寫的,所以該指令碼就是dos格式的,所以我們將指令碼格式轉換為unix格式也就ok了。

  • :set ff=unix
用vim開啟指令碼後輸入以上命令,就可以達到轉換格式的目的。

報錯——bad interpreter: 沒有那個檔案或目錄

當出現這個報錯時,原因是與上一個報錯類似的,所以我們只需要:

  • vim monitor.sh
  • :set ff=unix

在虛擬機器中找不到共享檔案的位置

在使用VMware時我們已經安裝了VMware tools,已經打開了“共享資料夾”功能,也已經添加了路徑:



這時我們將文件放入主機的共享資料夾中,但是虛擬機器中怎麼使用呢?首先我們要先了解一下linux中的mnt目錄,這個目錄被稱為掛載目錄,當掛載裝置後,這個目錄中就會出現相應的目錄。

  • /mnt/hgfs
當開啟上面的目錄時,我們就會發現共享資料夾就在其中。