2017-02-13 34 views
0

如何设置isIosPublicVersion正确两串比较?如果$os 设置为ios$version设置为公共,则它应该评估为true。正确的语法来设置变量的布尔与在bash

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

也就是如果情况设置是否正确?

回答

3

[[不产生输出,所以你尝试,你不能分配给一个变量。即使没有产生输出,那么你的语法是不正确的,因为这样分配的命令给一个变量输出variable=$(command)

[[作品是通过返回成功当条件评价为真,那么您可以使用临时布尔如果你想,通过改变第一线,以这样的方式:

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

或者,你可以使用函数:

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

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

+0

我试过了你的解决方案,但它不能按预期工作。请参阅:http://stackoverflow.com/questions/42254785/nested-if-case-in-bash-always-evaluating-to-true – mles

+0

@mles第一个错误,我编辑纠正。 –