如何在shell脚本中混合整数和字符串比较?

时间:2014-05-19 13:10:44

标签: string shell if-statement integer ash

我也有供应商提供此结果:

40u (0xd926)
48u (0xd92e)
56u (0xd936)
64u (0xd93e)
104u (0xd966)
112u (0xd96e)
136u (0xd986)
144u (0xd98e)
153u (0xd997)
161u (0xd99f)
36l (0xd826)
44l (0xd82e)
52l (0xd836)
60l (0xd83e)
100l (0xd866)
108l (0xd86e)
132l (0xd886)
140l (0xd88e)
149l (0xd897)
157l (0xd89f)

您可能会将这些视为802.11频道。

我通过删除括号部分清理此列表。此外,类似的列表可能包含看起来像56/80的条目。我还需要删除“/ 80”位。

我的结果如下:

40u 48u 56u 64u 104u 112u 136u 144u 153u 161u 36l 44l 52l 60l 100l 108l 132l 140l 149l 1571

在我的ASH脚本(ASH而不是BASH)中我有这样的情况:bandnick(2或5),带宽(20,40,80)和国家(两个字母的国家代码)在这种情况下是5,80和US:

channels=`wl chanspecs -b $bandnick -w $bandwidth -c $country | cut -d' ' -f 1 | cut -d'/' -f 1 |  xargs echo -n`  

read response 

for t in $channels; do
     if [[ "$response" = "$t" ]]; then
        # stuff
     fi
done

当我运行此代码时,channels中的答案最多为“161u”。 “361”不匹配。

我想这与整数与字符串比较有关,但我试过的似乎没有用:

  1. 删除引号
  2. 使用-eq代替=(批量或错误)
  3. 将装饰器添加到测试项[ "_$response" = "_$t' ]
  4. 有关让此方法发挥作用的任何建议吗?

1 个答案:

答案 0 :(得分:0)

腮红。我终于找到了我没看到的东西。值36lthree-six-ell而非three-six-one。字谜设计师的痘痘使得ells像个人一样。

感谢所有阅读此内容并考虑答案的人。