-1

この結果を出力するベンダーも提供しています。

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 スクリプト (BASH ではなく ASH) では、bandnick (2 または 5)、帯域幅 (20、40、80)、および国 (2 文字の国コード) が 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

このコードを実行すると、「161u」までの回答がchannels. 「361」は一致しません。

これは整数と文字列の比較に関係していると思いたいのですが、私が試したものは何も機能していないようです:

  1. 引用符を削除
  2. = の代わりに -eq を使用 (ロットまたはエラー)
  3. テスト項目にデコレータを追加する [ "_$response" = "_$t' ]

これを機能させるための提案はありますか?

4

1 に答える 1