を見つけた私はbashで以下のループがあります。バッシュチェックは
sudo iwlist wlan0 scan | grep somewifi | while read -r line; do
その中に「somewifi」を持つすべての無線LANをチェックし、何かをします。グレップのsomewifiが見つからない、すなわち空に出てくる場合、私はプログラムを終了するにはどうすればよい
を見つけた私はbashで以下のループがあります。バッシュチェックは
sudo iwlist wlan0 scan | grep somewifi | while read -r line; do
その中に「somewifi」を持つすべての無線LANをチェックし、何かをします。グレップのsomewifiが見つからない、すなわち空に出てくる場合、私はプログラムを終了するにはどうすればよい
#!/usr/bin/env bash
# ^^^^- NOT /bin/sh
target=somewifi
found=0
while read -r line; do
if [[ $line = *"$target"* ]]; then
echo "Doing something with $line"
found=1
fi
done < <(sudo iwlist wlan0 scan)
if ((found == 0)); then
echo "$target not found" >&2
exit 1
fi
私たちがここでやっているに作成されるように(メインシェルではなく、サブシェルでwhile
ループを実行することにより、BashFAQ #24を避けていますループをwhile read
ループにパイプすることによって)。これにより、終了した後も変わらないループ内の変数を設定できます。
ところで、実際に存在するかどうかを確認したい場合は、一致する行を処理せずに 'sudo iwlist wlan0 scan | grep -q scanwifi ||出口1 'で十分である。 –