使用bash中的两个字符串比较将变量设置为布尔值的正确语法

时间:2017-02-13 12:16:07

标签: bash

如何正确设置isIosPublicVersion?如果$os,它应该评估为真 设置为ios$version设置为公开。

isIosPublicVersion= [[ "${os}" == "ios" && "${version}" == "public" ]]
if [[ -n $upload ]] && [[ !$isIosPublicVersion ]]; then
  echo "upload true"
else
  echo "upload false"
fi

if case是否设置正确?

1 个答案:

答案 0 :(得分:3)

[[不会产生任何输出,因此您无法按照您的尝试分配变量。即使 生成输出,但您的语法也不正确,因为将命令输出分配给变量的方式是variable=$(command)

[[的工作方式是在条件评估为true时返回成功,因此如果需要,可以使用临时布尔值,方法是将第一行更改为此类:

[[ "${os}" == "ios" && "${version}" == "public" ]] && isIosPublicVersion=1
if [[ -n $upload ]] && [[ $isIosPublicVersion -ne 1 ]]

或者,您可以使用函数:

isIosPublicVersion() { [[ "${os}" == "ios" && "${version}" == "public" ]]; }
if [[ -n $upload ]] && !isIosPublicVersion

函数的返回码等于已评估的最后一个命令的返回码。