執行後出現bash: "ok": command not found,請教各位大大該如何處理此情況
String='"ok" : 1' #String="ok" : 1
mongo --host "rs0/mongo-0.mongo:27017,mongo-1.mongo:27017,mongo-2.mongo:27017" --eval "db.fsyncLock()" > tmp
A=$(grep -o '"ok" : 1' tmp )
if $A == $String
then
echo "fsyncLock Sceuess";
fi
bash: "ok": command not found
你的單引號打錯了, 這樣才是對的:
(應該用鍵盤雙引號下面那個符號)
String='"ok" : 1'
----- 我是分隔線 ------
如果打這樣, 就會跑出你那個錯誤:
(誤用了鍵盤 ~ 符號下面那個符號)
String=`"ok" : 1`
附螢幕擷圖, 上面是對的, 下面是錯的:
這讓我想到之前用錯commit符號的那件慘案。XD
感謝tracy大大圖文並茂的解釋 :)
請問大大是怎麼發現符號是錯的?
我把上面的錯誤單引號 使用python ord 結果都是一樣的
還是原po其實有修改內文了
謝謝
樓主貼文裡面是正確的符號, 但我猜他是從網頁上剪這段程式下來貼, 當他貼到自己的終端機時, 可能會因為 OS 剪貼簿的 HTML 自動轉換, 幫他把符號換成錯誤的....從網頁上剪下來的 code, 會因為你貼入的目標不同, 而有不同的轉換行為, 所以不見得是他自己打錯....
這種自動轉換造成的錯誤很常見, 除了 ' 之外, - 號也常被換成錯的, 空白和 Tab 也會互換...所以我剪網頁 code 的時候, 通常會先貼到純文字編輯器內看一次, 確認沒有亂轉字元, 再由純文字模式重新 copy/paste 到終端機內....
這種複製貼上後轉換符號之前也常遇到呢...
是低,我複製貼上有隱藏字元
Linux Shell不熟,
不過這個訊息通常是 字串format 錯誤,
應該是實際給的字串少於需求字串...