如何在Bash中的If语句中更改变量值?

时间:2015-09-08 11:00:59

标签: linux bash if-statement nagios

我对bash脚本不太熟悉。这似乎是一个容易解决的问题,但我对bash缺乏经验让我感到困惑。

我有一个文件,其中包含IP地址列表和相应的虚拟机名称。我希望我的程序要做的是获取ip并在我的文件中检查它。然后,当找到匹配项时,将虚拟机名称分配给变量VM,以便稍后使用。

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

VM=$(awk -v ip=$IP '$1 == ip{print $2}' <file>)

Awk accepts variables with -v switch.