この bash ステートメントでは、 ".$TOMCAT_USER" = && TOMCAT_USER=tomcat をどのようにテストしますか?

この bash ステートメントでは、

私は次の行に沿って複数の行を含むtomcat daemon.shスクリプトを理解しようとしています。test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat

test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat私は環境変数TOMCAT_USERが定義されていることを確認し、そうであればそれを使用し、そうでない場合はTomcatのデフォルト値を使用することを発見しました。

私が理解するのは、bashがこのステートメントを評価する方法です。

ベストアンサー1

&&デフォルトでは論理ANDです。前のコマンドが正常に完了したかどうかに応じて操作を実行できます(より複雑な場合はそうでない可能性があります)true || false && echo trueブール論理ルールに関する記事)。質問にステートメントを作成する別の方法は次のとおりです。

if test ".$TOMCAT_USER" = .; then
    TOMCAT_USER=tomcat
fi

それにもかかわらず、これは未設定/空の変数をテストする奇妙な方法です。 POSIXには、すでにこれを行ういくつかの方法があります。

: "${TOMCAT_USER:=tomcat}"  # Assign as part of the expansion,
                            # `:' is a noop to avoid running the expansion.
TOMCAT_USER="${TOMCAT_USER:-tomcat}"  # Expand, and then assign

:=/と-lessバージョン:-の違い::、変数が設定されていないかどうかをテストすること(元のテストに近い)に加えて、変数がnullかどうかをテストすることです。

おすすめ記事