ethtool 在script的問題 - Linux

Table of Contents

大家好,小弟最近在玩ethtool這東西並嘗試寫了個簡單的語法

但是發現只要他是變數我的scrpit就會出錯

#!/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

執行後跳出

./test.sh: line 3: Unknown!: command not found

-------------------------------------------------


想請問一下這是會是甚麼問題呢?

--

All Comments

Faithe avatarFaithe2016-11-15
第一個才是正確的吧,問題在if那邊…
你第二個KRIS根本錯誤
Rosalind avatarRosalind2016-11-17
${KR1S}
Jake avatarJake2016-11-20
第一行的也沒加``或$()來收
Steve avatarSteve2016-11-22
KR1S…
Emma avatarEmma2016-11-26
其實錯誤都告訴你了…
Hardy avatarHardy2016-11-27
不要吝嗇縮排跟括號
Franklin avatarFranklin2016-11-28
把==換成=試試
Robert avatarRobert2016-11-29
我改成 if [ "${KRS}" = "Unknown!" ] ; 但變成是
Isabella avatarIsabella2016-12-04
./test.sh: line 3: Unknown!: command not found ...
Ursula avatarUrsula2016-12-08
把 == 換成 = 會變成語法錯誤@@
Ivy avatarIvy2016-12-08
不是本來就有錯誤嗎?
Jacky avatarJacky2016-12-11
第二個寫法拿掉好了,我也覺得這樣寫是錯的@@
Irma avatarIrma2016-12-14
第三行等號兩邊不能有空白...,因為 sh 允許在命令
Candice avatarCandice2016-12-18
前賦值。像 LANG=zh man ls 。
Doris avatarDoris2016-12-21
第三行會會清空一個變數,然後把 $() 內的結果當成命
令呼叫。
Lily avatarLily2016-12-21
注意 == 並不是所有 shell 都支援,通常用 = 會比較好
George avatarGeorge2016-12-23
謝謝G大,謝謝各位,問題已解決了!!!!
Jacob avatarJacob2016-12-24
還有如果 var=$() 的結果有空隔,要寫成 var="$()"
Zora avatarZora2016-12-27
因為 ! 字元在 shell 有特別的意思,要改成 'Unknown!'
用單引號包起來就可以了.
Ida avatarIda2016-12-27
另外是鼓勵用 grep 搜尋判斷傳回值,問題比較少
Erin avatarErin2016-12-28
另外程式碼部分 a=$(...) 這語法, = 後面不可以有空白
Quanna avatarQuanna2016-12-30
正確 a=$(....) 語法,a= $(....) 這會有問題
Suhail Hany avatarSuhail Hany2017-01-01
好的謝謝各位~~~!!!!
Skylar DavisLinda avatarSkylar DavisLinda2017-01-05
樓上 ! 還好吧?包在字串中應該沒問題。
Queena avatarQueena2017-01-09
記得多空白那後續判斷 Unknown 前面,也要多空白字元啊
,反而困擾