如何在 Bash 中的 If 语句中更改变量值?
How to change variable value in an If statement in Bash?
我对 bash 脚本不是很熟悉。这似乎是一个容易解决的问题,但我对 bash 缺乏经验让我感到困惑。
我有一个包含 IP 地址列表和相应虚拟机名称的文件。我想让我的程序做的是获取 ip 并在我的文件中检查它。然后,当找到匹配项时,将虚拟机名称分配给变量 VM,以便我稍后使用它。
IP = 10.XXX.XX.10
cat /be_vcenter_names.txt | 'VM = awk -F " " {if ( ==$IP) VM=}'
echo $VM # nothing shows here
感谢您的帮助。我很乐意根据需要提供更多信息
要捕获命令的输出,请使用 $(...)
。请注意子 shell 中的管道部分 运行,因此您不能更改变量的值,因为更改不会传播回主 shell.
VM=$(awk ' == "1.2.3.4" { print }' < /usr/lib64/nagios/plugins/be_vcenter_names.txt)
VM=$(awk -v ip=$IP ' == ip{print }' <file>)
我对 bash 脚本不是很熟悉。这似乎是一个容易解决的问题,但我对 bash 缺乏经验让我感到困惑。
我有一个包含 IP 地址列表和相应虚拟机名称的文件。我想让我的程序做的是获取 ip 并在我的文件中检查它。然后,当找到匹配项时,将虚拟机名称分配给变量 VM,以便我稍后使用它。
IP = 10.XXX.XX.10
cat /be_vcenter_names.txt | 'VM = awk -F " " {if ( ==$IP) VM=}'
echo $VM # nothing shows here
感谢您的帮助。我很乐意根据需要提供更多信息
要捕获命令的输出,请使用 $(...)
。请注意子 shell 中的管道部分 运行,因此您不能更改变量的值,因为更改不会传播回主 shell.
VM=$(awk ' == "1.2.3.4" { print }' < /usr/lib64/nagios/plugins/be_vcenter_names.txt)
VM=$(awk -v ip=$IP ' == ip{print }' <file>)