将操作的结果存储在bash中的变量中

时间:2016-09-12 21:30:57

标签: bash shell

我在bash中有一个命令,它返回存储在变量$line中的IP地址的语言环境。该命令看起来像这样:

geoiplookup -f GeoIP.dat "$line" >> resultFile

将返回“New York,NY”等结果。

现在我想将Ip地址连接到结果,所以它看起来像这样:

“215.216.217.218,New York,NY”

类似于:

$line +", "+ (geoiplookup -f GeoIP.dat "$line") >>resultFile

有人能给我正确的语法吗?

2 个答案:

答案 0 :(得分:3)

怎么样

echo "$line, $(geoiplookup -f GeoIP.dat "$line")" >> resultFile

这依赖于bash $(...)的反引号运算符,它执行命令并捕获其输出。因此,在上面一行中,bash将执行geoiplookup -f GeoIP.dat "$line"并将其输出放在$(...)部分的位置。

答案 1 :(得分:1)

这个问题的标题引导你走错了路。您根本不需要存储输出。只需按所需顺序将所有内容写入输出文件:

{ printf "%s, " "$line"; geoiplookup -f GeoIP.dat "$line"; } >> resultFile