我正在尝试为 cronjob 编写一个简单的 bash 脚本来检查是否存在某些接口(隧道)。如果不存在,我想启动另一个脚本来(重新)启动它们。我的问题是:我没有让“IF”工作:
#!bin/bash
for i in tun1 tun2 tun3 tun3 tun4 tun5
do OUT="$(ip a show $i up)";
if [[ $OUT == *"does not exist."* ]]; then
echo "$i is down"
else
echo "$i is up"
fi
done
当前输出为:
检查隧道
tun1 已启动
tun2 已启动
tun3 已启动
tun3 已启动
tun4 已启动
设备“tun5”不存在。
tun5 已启动
答案1
Device "tun5" does not exist.
打印到 stderr (标准错误)。
您的脚本仅捕获 stdout (标准输出)。
您可以将 stderr 重定向到 stdout 来解决问题(尾随2>&1
)。
OUT="$(ip a show $i up 2>&1)"