我想使用 bash 中的“条件正则表达式”结构,该结构自 bash 的第三版(大约 2004 年)以来一直存在。它应该是这样的:
if [[ $string =~ $regexp ]]; then
#do smthg
else
#do somthg else
fi
所以这是我的代码,遵循这个结构,它的作用是检查 SSID 中包含的名称是否存在于iw dev wlan0 link的输出中:
if [[ $(iw dev wlan0 link) =~ $SSID+ ]]; then
#do sthming
else
echo "wrong network"
fi
出于某种我无法理解的原因,如果我将它直接运行到 bash shell 中,这个语句就可以很好地工作,比如
if [[ $(iw dev wlan0 link) =~ $SSID+ ]]; then echo found; else echo not found; fi
但是如果我在它包含的脚本中运行它,它会吐出:
scripts/ssidchecker.sh: 22: [[: not found
22 是“fi”关键字的行。最奇怪的是,它总是会执行“else”语句中包含的代码
“未找到”是否意味着表明正则表达式在该字符串中找不到任何内容?这是一个真正的错误信息吗?