encontré esto
channel_map = {
"2412" : 1,
"2417" : 2,
"2422" : 3,
"2427" : 4,
"2432" : 5,
"2437" : 6,
"2442" : 7,
"2447" : 8,
"2452" : 9,
"2457" : 10,
"2462" : 11,
"2467" : 12,
"2472" : 13,
"2484" : 14
}
¿Cómo convierto esto, para poder usar esto en un script bash?
Me gustaria definir
$ CANAL = 11
y el script debe usar la frecuencia correcta.
El comando que uso es, por ejemplo:
iw dev wlan0 ibss join $ESSID 2412 HT40+ fixed-freq $CELLID

Respuestas:
Creo que la respuesta que busca rubo77 es:
#! / bin / sh - channel_map [1] = 2412 mapa_canales [2] = 2417 mapa_canales [3] = 2422 channel_map [4] = 2427 mapa_canales [5] = 2432 mapa_canales [6] = 2437 mapa_canales [7] = 2442 mapa_canales [8] = 2447 mapa_canales [9] = 2452 mapa_canales [10] = 2457 mapa_canales [11] = 2462 channel_map [12] = 2467 channel_map [13] = 2472 mapa_canales [14] = 2484 canal = 11 echo $ {channel_map [$ channel]}Una forma más compacta de hacerlo:
#! / bin / bash channel_map = (XYZZY 2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 \ 2462 2467 2472 2484) canal = 11 echo $ {channel_map [$ channel]}channel_map es una matriz. El
XYZZYes un marcador de posición; se le asignará achannel_map[0].fuente
Si solo está buscando extraer el número correspondiente de ese archivo, intente:
dónde
mapestá su archivo de entrada y$CHANNELestá configurado para el canal que está buscando.fuente
No estoy seguro de su implementación completa, pero como una forma rápida de lograrlo ... Aunque, como dijo @Paul, la mayoría sé de tomar el número de canal en lugar de la frecuencia:
Asegúrese de guardarlo como whatever.sh y
chmod +x whatever.sh. Luego puede escribir./whatever.sh 4(desde el mismo directorio) y lo anterior hará eco2427fuente