2012-07-19 89 views
0

我想比较一个字符串与整数,如果它满足给定的要求,那么它会将该值添加到文本文件。比较带整数的字符串

test="$fqdn:$port" 

if [ $test = "$fqdn:443" ]; then 
    echo "$test" | tee -a list.txt 
fi 

在这种情况下,变量fqdn将举行一个网站和端口的值会持有不同的端口号,但我只希望保留有443口:后的那些并将其附加到一个新的文本文件名为list.txt

当我运行此代码,我不明白出于某种原因想要的结果。有人可以帮忙吗?我对shell编程非常新颖。

编辑:

的FQDN看起来像这样的价值观:

something1.awesome.com 
something2.awesome.com 
something3.awesome.com 
something4.awesome.com 
something5.awesome.com 
... 

对于港口,它看起来像这样:

80 
8090 
443 
1090 
80 
80 
... 

编辑2:

我的确在考虑只将$ port与443进行比较,但在我的情况下这不起作用,因为第一个fqdn与第一个端口一起使用,并且如果第一个fqdn:port等于类似fqdn:443的东西,则将其添加到文本文件。

+0

什么是$ FQDN值,并在不给所需要的输出的情况下$端口? – 2012-07-19 14:21:35

+2

只需简单地测试“$ port”=“443”就可以了。 – 2012-07-19 14:23:12

+0

这在我的情况下不起作用,因为第一个fqdn与第一个端口并且如果第一个fqdn:端口一起使用。如果它等于fqdn:443之类的东西,那么将其添加到文本文件中。 – bloodstorm17 2012-07-19 14:28:01

回答

0

尝试是这样的

if [ $port -eq 443 ]; then 
    echo $fqdn:$port | tee -a list.txt 
fi 
0

很容易治疗合并FQDN和PORT数据插座,因为你也想记录这些信息,这是优选的。然后执行与grep的简单文本匹配,将找到与特定端口对应的每一行。

是套接字列表在脚本中使用较早,例如在文件列表?如果是的话,下面的工作(假设每行一个项目文件socket.txt中): -

PORT=443 
grep ":$PORT\$" socket.txt | tee -a list.txt 

这里的grep是搜索文件,其中全端口号采用冒号后面的所有字符串。或者,grep也会过滤通过管道传递给它的行。

如果没有可用的插座信息,则可以结合自己连续FQDN和PORT项目和生产socket.txt文件。如果您可以将FQDN列表和PORT列表写入两个文件(每行一个项目),则以下脚本(例如名称为socket)将执行此操作。

#!/bin/bash 

die() { 
    echo "$*" >&2 
    exit 1 
} 

[ $# = 2 ] || die "usage: `basename $0` FQDN PORT" 

exec 6<$1 || die "Cannot open $1" 
exec 7<$2 || die "Cannot open $2" 

while true 
do 
    read FQDN <&6 && read PORT <&7 || exit 
    echo "$FQDN:$PORT" 
done 

运行方式:socket fqdn.txt port.txt