Bash if语句没有捕获

时间:2016-06-03 13:38:08

标签: bash awk

下午好,

我正在玩bash并想编写一个脚本来执行traceroute并检查第二跳是否是特定的IP地址。下面是我的剧本:

Failover_check= traceroute 8.8.8.8 -n | grep 192.168.0.2 | awk '{print  $2;}'

if [ $Failover_check = "192.168.0.2" ]
then
    echo "ip found"
else
    echo "ip not ound"
fi

每次运行脚本时,它总是会触及else语句

由于

2 个答案:

答案 0 :(得分:3)

使用$(...)将其分配给变量,并确保=之前和之后没有空格必须避免拆分并提供正确的结果

Failover_check=$(traceroute 8.8.8.8 -n | grep 192.168.0.2 | awk '{print  $2;}')

答案 1 :(得分:2)

因为您的命令输出未分配给Failover_check变量。使用:

Failover_check=$(traceroute 8.8.8.8 -n | grep 192.168.0.2 | awk '{print  $2;}')

也;你可以考虑引用你的变量;当变量为空时避免错误:

if [ "$Failover_check" = "192.168.0.2" ]