读取时没有找到行的Bash检查

时间:2017-12-30 23:30:26

标签: bash

我在bash中有以下循环:

sudo iwlist wlan0 scan | grep somewifi | while read -r line; do

用#34; somewifi"检查所有wifi。在其中并做一些事情。如果grep somewifi出现空白即未找到

,如何退出程序

1 个答案:

答案 0 :(得分:3)

#!/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

我们在这里做的是通过在主shell中执行while循环而不是子shell(通过管道进入while read循环创建)来避免BashFAQ #24 )。这让我们可以在循环中设置变量,这些变量在退出后仍然存在。