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

标签 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

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

最佳答案

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

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

关于linux - 如何在 Bash 中的 If 语句中更改变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32456054/

相关文章:

linux - vmWare Server 可以安装在 X-less 主机上吗?

linux - 如何在没有 XML 解析器的情况下使用 shell 脚本根据模式获取子字符串

json - 输出多行 bash 变量以 curl json

bash - BASH 脚本中的“换行意外”错误

尝试在 Linux 上打开文件时出现 Java Nullpointer 异常

linux - Raspberry Pi/Raspbian 上的 Clang 错误?

linux - .profile 或 .bashrc 中 shell 中 zenburn 的语法解释

java - 为什么我的 if(else if) 语句被忽略?

excel - 如何计算,如果某个范围内的任何单元格包含一个值,则进行求和,否则不显示任何内容

c++ - 我如何根据宏中的类型做出决定?