shell指令碼中變數一定要加雙引號

2021-10-21 10:57:43 字數 778 閱讀 2922

大多數時候,雖然可以不使用括起字串和字串變數的雙引號,但這並不是好主意。為什麼呢?因為如果環境變數中恰巧有乙個空格或製表鍵,bash 將無法分辨,從而無法正常工作。這裡有乙個錯誤的比較示例:

if [ $myvar = "foo bar oni" ]

then

echo "yes"

fi

在上例中,如果 myvar 等於 "foo",則**將按預想工作,不進行列印。但是,如果 myvar 等於 "foo bar oni",則**將因以下錯誤失敗:

[: too many arguments

在這種情況下,"$myvar"(等於 "foo bar oni")中的空格迷惑了 bash。bash 擴充套件 "$myvar" 之後,**如下:

[ foo bar oni = "foo bar oni" ]

因為環境變數沒放在雙引號中,所以 bash 認為方括號中的自變數過多。可以用雙引號將字串自變數括起來消除該問題。請記住,如果養成將所有字串自變數用雙引號括起的習慣,將除去很多類似的程式設計錯誤。"foo bar oni" 比較 應該寫成:

if [ "$myvar" = "foo bar oni" ]

then

echo "yes"

fi

全域性變數一定要加 extern

儘管你已經使用了 ifndef a define a class a int i endif 但還是出現這樣的錯誤!linking.print1.obj error lnk2005 int i i 3ha already defined in main.obj print1.obj error ln...

shell指令碼中,寫檔案的路徑一定要寫全路徑。

利用dbms scheduler包,想建立乙個job,program採用可執行指令碼 shell指令碼 在em中建立job成功。對指令碼所在的目錄也建立了對應的database directory,並且授予了對應的資料庫使用者對該目錄的read write許可權,但是job執行的時候,一直顯示為fa...

shell指令碼中的變數

1 在命令列中和指令碼中,變數定義得格式 name value 左右兩邊不能有空格,否則會當做命令來對待,輸出乙個command not found echo name echo 列印出變數,引用變數使用 name.2 單引號和雙引號 語法 和php中相同 雙引號仍然可以保有變數的內容,但單引號內僅...