0

我正在从 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 present”。

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

怎么了?

4

1 回答 1

0

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

此外,如果您将 x 添加到主机名,它将始终为真(它将始终自行返回 x)。Bash 从不需要 +x,去掉它。

if [[ "$selection" = 2 && -n $hostname ]]; then
    echo "Args present."
else
    echo "Args NOT present."
fi
于 2017-06-27T13:46:56.003 回答