まず、使用しているシステムに bash がインストールされていません。したがって、bash ベースの回答はありません。if
Ash は正規表現で s を実行しません。
ash シェル スクリプトには、受け入れ可能な応答のリストがあります。
# NB: IFS = the default IFS = <space><tab><newline>
# 802.11 channel names
channels="1 2 3 4 5 5u 6 7 7u 8 8u 9 9u 10 10u 11 11u 2l 36 3l 40 40u 44 48
48u 4l 52 56 56u 5l 60 61 64 64u 7l 100 104 104u 108 112
112u 116 132 136 136u 140 144 144u 149 153 153u 157 161 161u 165 36l
44l 52l 60l 100l 108l 132l 140l 149l 157l 36/80 40/80 44/80 48/80 52/80 56/80 60/80
64/80 100/80 104/80 108/80 112/80 132/80 136/80 140/80 144/80 149/80 153/80 157/80 161/80"
メニュー ルーチンが、一致する可能性のある応答を含む "MENU_response" を返しました。有効な応答が返されたかどうかを確認したいです。
for t in "$channels"; do
echo "B MENU_response = \"${MENU_response}\" test = \"${t}\""
if [ "${MENU_response}" = "${t}" ]; then
break
fi
done
ループ内のエコーは、 that $t
= all of を再投稿していますが$channels
、これは意味がありません。私はこの手法を他のいくつかの場所で使用しましたが、うまく機能します。
なぜこれが起こっているのか誰か教えてもらえますか?各個人を引用符で囲む必要がありchannel
ますか?