【发布时间】:2012-07-19 14:18:12
【问题描述】:
我想将一个字符串与一个整数进行比较,如果它满足给定的要求,那么它将将该值添加到一个文本文件中。
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 之类的值,则将其添加到文本文件。
【问题讨论】:
-
在没有给出所需输出的情况下,$fqdn 和 $port 的值是多少?
-
简单地测试 "$port" = "443" 会更简单。
-
这在我的情况下不起作用,因为第一个 fqdn 与第一个端口一起使用,如果第一个 fqdn:端口。如果它等于 fqdn:443 之类的内容,则将其添加到文本文件中。
-
在您的
if语句之前,尝试添加类似echo "\$test='$test'; \$fqdn:443='$fqdn:443'"的内容。这应该可以立即清楚$test和$fqdn:443之间的区别。 -
@bloodstorm17 我不明白你想说什么。如果第一个
fqdn与第一个port一起出现,有什么问题?如果您使用port变量来创建test字符串,那么它没有理由不起作用。如果在最终脚本中没有port变量,您仍然可以使用${test##*:}来提取端口号。
标签: linux bash shell scripting