执行./test.sh 12.34
时,grep应与12.34
匹配,而不是12-34
。如何实现这一目标?
#!/bin/sh
ip=$1
echo $ip
if netstat | grep ssh | grep $ip; then
netstat | grep ssh | grep $ip
else
echo 'No'
fi
答案 0 :(得分:6)
您可以将grep
与-F
选项一起使用:
来自man grep:
-F, --fixed-strings
Interpret pattern as a set of fixed strings (i.e. force grep to
behave as fgrep).
你的例子:
grep -F "$ip"
答案 1 :(得分:0)
grep
使用正则表达式匹配字符串。 .
是正则表达式中的特殊字符,因此需要进行转义。有一种相当优雅的方式:
export escaped_ip_addr = $(echo $ip_addr | sed "s/\./\\\./g")
哪会成为你的最终代码:
#!/bin/sh
#test.sh
ip=$1
echo $ip
export escaped_ip = $(echo $ip | sed "s/\./\\\./g")
if netstat | grep ssh | grep $escaped_ip; then
netstat | grep ssh | grep $escaped_ip
else
echo 'No'
fi