在bash脚本中检查变量的存在

时间:2017-06-27 13:43:17

标签: bash vmware-tools

我从VMware Tools检索主机名并尝试评估我的脚本中是否存在两个变量:

selection=2

# Check if hostname is present in guestinfo
hostname="$(vmtoolsd --cmd "info-get guestinfo.startup.hostname")"

if [[ "$selection" = 2 && ! -z ${hostname+x} ]]
then
    echo "Args present."
else
    echo "Args NOT present."
fi

无论是否在VMX配置文件中设置了主机名值,if语句都会返回" Args存在。"

我相信这是因为执行了vmtoolsd命令,这意味着'主机名'变量不为空。不确定如何解决。

有什么问题?

1 个答案:

答案 0 :(得分:0)

首先,清理你的测试 - 不要使用! -z,当你有一个-n。

此外,如果要将x添加到主机名,它将始终为true(它将始终返回x)。 Bash永远不需要+ x,摆脱它。

if [[ "$selection" = 2 && -n $hostname ]]; then
    echo "Args present."
else
    echo "Args NOT present."
fi