楼主:
Rossi30 (罗西三十)
2016-11-15 11:21:49大家好,小弟最近在玩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
第一个才是正确的吧,问题在if那边…你第二个KRIS根本错误
作者: dou0228 (7777) 2016-11-15 11:51:00
${KR1S}第一行的也没加``或$()来收
作者:
ckc1ark (伪物)
2016-11-15 12:03:00把==换成=试试
楼主:
Rossi30 (罗西三十)
2016-11-15 12:38:00我改成 if [ "${KRS}" = "Unknown!" ] ; 但变成是./test.sh: line 3: Unknown!: command not found ...把 == 换成 = 会变成语法错误@@
楼主:
Rossi30 (罗西三十)
2016-11-15 12:46:00第二个写法拿掉好了,我也觉得这样写是错的@@
第三行等号两边不能有空白...,因为 sh 允许在命令前赋值。像 LANG=zh man ls 。第三行会会清空一个变量,然后把 $() 内的结果当成命令呼叫。
作者:
lantw44 (#######################)
2016-11-15 13:31:00注意 == 并不是所有 shell 都支援,通常用 = 会比较好
楼主:
Rossi30 (罗西三十)
2016-11-15 13:47:00谢谢G大,谢谢各位,问题已解决了!!!!
还有如果 var=$() 的结果有空隔,要写成 var="$()"
因为 ! 字符在 shell 有特别的意思,要改成 'Unknown!'用单引号包起来就可以了.另外是鼓励用 grep 搜寻判断传回值,问题比较少另外程式码部分 a=$(...) 这语法, = 后面不可以有空白正确 a=$(....) 语法,a= $(....) 这会有问题
楼主:
Rossi30 (罗西三十)
2016-11-15 16:04:00好的谢谢各位~~~!!!!
记得多空白那后续判断 Unknown 前面,也要多空白字符啊,反而困扰