wpa_supplicant
パスワードが間違っている場合は、スクリプトを終了できるように見ています。
以下にコードブロック全体の背景を含めました。echo
実行していることがわかりますが、exit
基本スクリプトは停止しないようです。
(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) &
exit
私はこれがすでにバックグラウンドで実行されているスレッドを殺していると思いますか?
そうですか?それでは、kill
ここでどのように親になることができますか?
答え1
pid
デフォルトスクリプトをサブシェルに渡し、kill
必要に応じて渡すことができます。
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) &
答え2
ところで、exit
すでにバックグラウンドにあるプロセスに影響を与え、ゼロ終了状態を準備します。とにかくプロセスが中断される直前なので、躊躇せずに「キル」と呼びます。
バックグラウンドでwpaコマンドを実行してPIDを追跡するため、以下を使用する必要はありません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`
わかりました、wpaコマンドが少し長いので、重要な部分に注意を引くために短縮しました。