2015-09-08 39 views
0

我对bash脚本不是很熟悉。这似乎是一个容易解决的问题,但是我对bash的经验不足让我感到莫名其妙。如何在Bash中的If语句中更改变量值?

我有一个文件,其中包含一个IP地址列表和相应的虚拟机名称。我想让我的程序执行的是获取IP并在我的文件中检查它。然后,当发现匹配时,将虚拟机名称分配给变量虚拟机,以便稍后使用它。

IP = 10.XXX.XX.10 
cat /be_vcenter_names.txt | 'VM = awk -F " " {if ($1==$IP) VM=$2}' 
echo $VM # nothing shows here 

感谢您的帮助。我很乐意根据需要提供更多信息

回答

1

要捕获命令的输出,请使用$(...)。请注意,管道部件以子壳运行,因此您无法更改变量的值,因为更改不会传播回主shell。

VM=$(awk '$1 == "1.2.3.4" { print $2 }' < /usr/lib64/nagios/plugins/be_vcenter_names.txt) 
+0

可能只是'VM = $(AWK '$ 1 == “1.2.3.4”{打印$ 2}' 文件)'。 – kojiro

+0

@kojiro:更新,谢谢。 – choroba

+0

@choroba谢谢你这个工作。当我使用变量IP时,而不是对IP进行硬编码,它不会有任何想法?* VM = $(awk'$ 1 == I $ P {print $ 2}'