2017-02-13 8 views
0

isIosPublicVersionを正しく設定するにはどうすればよいですか? $osiosに設定され、$versionがpublicに設定されている場合はtrueと評価されます。変数をbashで2つの文字列比較を持つブール値に設定する適切な構文

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

if caseは正しく設定されていますか?

答えて

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 

関数の戻りコードが評価された最後のコマンドのリターンコードに等しい:別の方法として、あなたは、関数を使用することができます。

+0

解決方法を試しましたが、期待どおりに機能しません。参照してください:http://stackoverflow.com/questions/42254785/nested-if-case-in-bash-always-evaluating-to-true – mles

+0

@mles修正するために編集した最初のものにエラーがありました。 –

関連する問題