【发布时间】:2016-02-02 06:21:31
【问题描述】:
我不确定我做错了什么,它不起作用的原因是没有意义的:
这个我确实得到了预期的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]”是字符匹配而不是单词。为什么用“/”替换“[”不能解决问题?
【问题讨论】:
-
bashtag wiki 提供了一些技巧,可以让您的问题最小化且易于回答。也许下次再回顾一下!
标签: regex bash if-statement mikrotik