Estoy mirando wpa_supplicant
para poder eliminar mi script si la contraseña es incorrecta.
Pongo en contexto todo el bloque de código a continuación. Puedo ver la echo
ejecución pero exit
no parece detener mi script principal.
(sudo stdbuf -o0 wpa_supplicant -Dwext -i$wifi -cwifi.conf 2>&1 \
| grep -m 1 "pre-shared key may be incorrect" \
&& echo I see this \
&& exit) &
Sospecho que exit
aquí simplemente está matando un hilo que ha estado en segundo plano.
¿Es ese el caso? Si es así, ¿cómo puedo ser kill
el padre aquí?
Respuesta1
Puede pasar el pid
script principal al subshell y luego kill
cuando lo desee:
export mypid=$$
(sudo stdbuf -o0 wpa_supplicant -Dwext -i$wifi -cwifi.conf 2>&1 \
| grep -m 1 "pre-shared key may be incorrect" \
&& echo I see this \
&& kill $mypid) &
Respuesta2
Correcto, exit
está afectando el proceso que ha estado en segundo plano, disponiendo un estado de salida cero. No lo llamaría "matar", ya que el proceso estaba a punto de detenerse de todos modos.
Ejecute el comando wpa en segundo plano y realice un seguimiento de su PID para no tener que usarlo killall
:
bash -c 'echo $$ > /tmp/pid; exec wpa_supplicant 2>&1 > /tmp/out' &
sleep 1
egrep 'pre-shared key may be incorrect' /tmp/out && kill `cat /tmp/pid`
Lo sé, tu comando wpa es un poco más largo, lo abrevié para llamar la atención sobre las partes importantes.