0

我不确定我做错了什么,它不起作用的原因是没有意义的:

这个我确实得到了预期的SSH结果

if [ "Hennopsview" != "2 - LAN" ] && [ "Hennopsview" != "1 - WAN" ] \
           && [ "Hennopsview" != "Cross Connect" ]; then
    if [[ "Hennopsview" =~ /pptp/g ]]; then
        echo "No Match 2"
    else
        ssh admin@192.168.0.1 ':put [/interface eoip get [/interface eoip find name="Hennopsview"] remote-address]'
    fi
else
    echo "No Match"
fi

然而,下面的一个并没有给我匹配 2 的回声

if [ "<pptp-hennopsview>" != "2 - LAN" ] && [ "<pptp-hennopsview>" != "1 - WAN" ] \
            && [ "<pptp-hennopsview>" != "Cross Connect" ]; then
    if [[ "<pptp-hennopsview>" =~ /pptp/g ]]; then
        echo "No Match 2"
    else
        ssh admin@192.168.0.1 ':put [/interface eoip get [/interface eoip find name="<pptp-hennopsview>"] remote-address]'
    fi
else
    echo "No Match"
fi

这个正则表达式有什么问题?

但是,以下修复了第二个请求

if [ "<pptp-hennopsview>" != "2 - LAN" ] && [ "<pptp-hennopsview>" != "1 - WAN" ] \
            && [ "<pptp-hennopsview>" != "Cross Connect" ]; then
    if [[ "<pptp-hennopsview>" =~ [pptp] ]]; then
        echo "No Match 2"
    else
        ssh admin@154.127.117.218 ':put [/interface eoip get [/interface eoip find name="<pptp-hennopsview>"] remote-address]'
    fi
else
    echo "No Match"
fi

但后来打破了原来的

if [ "Hennopsview" != "2 - LAN" ] && [ "Hennopsview" != "1 - WAN" ] \
            && [ "Hennopsview" != "SDA - Cross Connect" ]; then
    if [[ "Hennopsview" =~ [pptp] ]]; then
        echo "No Match 2"
    else
        ssh admin@154.127.117.218 ':put [/interface eoip get [/interface eoip find name="Hennopsview"] remote-address]'
    fi
else
    echo "No Match"
fi

我明白使用“[pptp]”是字符匹配而不是单词。为什么用“/”替换“[”不能解决问题?

4

2 回答 2

1

/pptp/g将匹配字符串".../pptp/g..."。运算符=~的右侧是正则表达式,没有任何分隔符:没有引号,没有斜杠。如果你想找到pptp,那是唯一应该在那里的东西:

[[ "<pptp-hennopsview>" =~ pptp ]]

是你可能想要做的。

编辑:我不知道为什么我写了“没有引号”。

于 2016-02-02T06:27:43.730 回答
0

以下解决了我的问题:

if [ "<pptp-Hamanskraal>" != "2 - LAN" ] && [ "<pptp-Hamanskraal>" != "1 - WAN" ] && [ "<pptp-hennopsview>" != "Cross Connect" ]; then if [[ "<pptp-hennopsview>" =~ "pptp-" ]]; then ssh admin@192.168.0.1 ':put [/interface pptp-server get [/interface pptp-server find name="<pptp-hennopsview>"] client-address ]'; else ssh admin@192.168.0.1 ':put [/interface eoip get [/interface eoip find name="<pptp-hennopsview>"] remote-address]'; fi else echo "No Match"; fi

以下解决了我所有的问题

[[ "<pptp-hennopsview>" =~ "pptp-" ]]

谢谢你。

于 2016-02-02T07:03:29.500 回答