→ kenwufederer: 第一個才是正確的吧,問題在if那邊… 11/15 11:50
→ kenwufederer: 你第二個KRIS根本錯誤 11/15 11:50
噓 dou0228: ${KR1S} 11/15 11:51
→ dou0228: 第一行的也沒加``或$()來收 11/15 11:52
→ kenwufederer: KR1S… 11/15 11:53
→ kenwufederer: 其實錯誤都告訴你了… 11/15 11:54
→ kenwufederer: 不要吝嗇縮排跟括號 11/15 11:59
推 ckc1ark: 把==換成=試試 11/15 12:03
→ Rossi30: 我改成 if [ "${KRS}" = "Unknown!" ] ; 但變成是 11/15 12:38
→ Rossi30: ./test.sh: line 3: Unknown!: command not found ... 11/15 12:39
→ Rossi30: 把 == 換成 = 會變成語法錯誤@@ 11/15 12:40
→ kenwufederer: 不是本來就有錯誤嗎? 11/15 12:43
→ Rossi30: 第二個寫法拿掉好了,我也覺得這樣寫是錯的@@ 11/15 12:46
※ 編輯: Rossi30 (223.140.94.168), 11/15/2016 12:47:25
照d大的說明改成這樣,也是會有錯誤
#!/bin/sh
KR1S= $(ethtool eth1 | grep 'Speed' | cut -d ' ' -f 2)
if [ "${KR1S}" == "Unknown!" ] ; then
sleep 1s
echo "# Speed ...PASS"
else
echo "# Speed ...FAIL"
fi
※ 編輯: Rossi30 (223.140.94.168), 11/15/2016 12:48:47
推 Gold740716: 第三行等號兩邊不能有空白...,因為 sh 允許在命令 11/15 13:18
→ Gold740716: 前賦值。像 LANG=zh man ls 。 11/15 13:21
→ Gold740716: 第三行會會清空一個變數,然後把 $() 內的結果當成命 11/15 13:23
→ Gold740716: 令呼叫。 11/15 13:23
→ lantw44: 注意 == 並不是所有 shell 都支援,通常用 = 會比較好 11/15 13:31
→ Rossi30: 謝謝G大,謝謝各位,問題已解決了!!!! 11/15 13:47
→ Gold740716: 還有如果 var=$() 的結果有空隔,要寫成 var="$()" 11/15 13:56
→ kenduest: 因為 ! 字元在 shell 有特別的意思,要改成 'Unknown!' 11/15 14:25
→ kenduest: 用單引號包起來就可以了. 11/15 14:25
→ kenduest: 另外是鼓勵用 grep 搜尋判斷傳回值,問題比較少 11/15 14:26
→ kenduest: 另外程式碼部分 a=$(...) 這語法, = 後面不可以有空白 11/15 14:27
→ kenduest: 正確 a=$(....) 語法,a= $(....) 這會有問題 11/15 14:28
→ Rossi30: 好的謝謝各位~~~!!!! 11/15 16:04
→ Gold740716: 樓上 ! 還好吧?包在字串中應該沒問題。 11/15 16:05
推 kenduest: 記得多空白那後續判斷 Unknown 前面,也要多空白字元啊 11/15 19:28
→ kenduest: ,反而困擾 11/15 19:28