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



我不太熟悉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

谢谢你的帮助。如有需要,我很乐意提供更多信息

捕获命令的输出,使用$(...)。注意,管道部分在子shell中运行,所以你不能更改变量的值,因为更改不会传播回主shell。

VM=$(awk '$1 == "1.2.3.4" { print $2 }' < /usr/lib64/nagios/plugins/be_vcenter_names.txt)
VM=$(awk -v ip=$IP '$1 == ip{print $2}' <file>)

Awk接受带有-v开关的变量

最新更新