iT邦幫忙

0

Linux Script 字串處理

執行後出現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()" > temp
      
A=$(grep -o '"ok" : 1' temp )

if $A == $String
then
  echo "fsyncLock Sceuess";
fi
bash: "ok": command not found

2 個回答

2
raytracy
iT邦大神 1 級 ‧ 2019-04-22 18:57:46
最佳解答

你的單引號打錯了, 這樣才是對的:
(應該用鍵盤雙引號下面那個符號)

String='"ok" : 1'


----- 我是分隔線 ------

如果打這樣, 就會跑出你那個錯誤:
(誤用了鍵盤 ~ 符號下面那個符號)

String=`"ok" : 1`

附螢幕擷圖, 上面是對的, 下面是錯的:
https://ithelp.ithome.com.tw/upload/images/20190422/200266031Xpc2Ky1ZM.png

看更多先前的回應...收起先前的回應...
froce iT邦高手 1 級 ‧ 2019-04-22 19:44:58 檢舉

這讓我想到之前用錯commit符號的那件慘案。XD

ted00132 iT邦新手 5 級 ‧ 2019-04-23 09:44:25 檢舉

感謝tracy大大圖文並茂的解釋 :)

laudai iT邦新手 5 級 ‧ 2019-04-23 10:31:43 檢舉

請問大大是怎麼發現符號是錯的?
我把上面的錯誤單引號 使用python ord 結果都是一樣的
還是原po其實有修改內文了
謝謝

raytracy iT邦大神 1 級 ‧ 2019-04-23 10:37:38 檢舉

樓主貼文裡面是正確的符號, 但我猜他是從網頁上剪這段程式下來貼, 當他貼到自己的終端機時, 可能會因為 OS 剪貼簿的 HTML 自動轉換, 幫他把符號換成錯誤的....從網頁上剪下來的 code, 會因為你貼入的目標不同, 而有不同的轉換行為, 所以不見得是他自己打錯....

這種自動轉換造成的錯誤很常見, 除了 ' 之外, - 號也常被換成錯的, 空白和 Tab 也會互換...所以我剪網頁 code 的時候, 通常會先貼到純文字編輯器內看一次, 確認沒有亂轉字元, 再由純文字模式重新 copy/paste 到終端機內....

Homura iT邦高手 2 級 ‧ 2019-04-23 10:51:19 檢舉

這種複製貼上後轉換符號之前也常遇到呢...

1
小魚
iT邦高手 1 級 ‧ 2019-04-22 18:33:20

Linux Shell不熟,
不過這個訊息通常是 字串format 錯誤,
應該是實際給的字串少於需求字串...

我要發表回答

立即登入回答