我在bash中有以下循环:
sudo iwlist wlan0 scan | grep somewifi | while read -r line; do
用#34; somewifi"检查所有wifi。在其中并做一些事情。如果grep somewifi出现空白即未找到
,如何退出程序答案 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 )。这让我们可以在循环中设置变量,这些变量在退出后仍然存在。