Bashの制御フロー変数

Bashの制御フロー変数

/var/www/html/Debian-ApacheのWebアプリケーション文書のルートは一般的に/srv/http/

デプロイ指向のドキュメントルートが何であるかをテストするために必要なデプロイメントに依存しないLAMPビルドスクリプトを作成し(そのディレクトリの存在に応じて)、スクリプトがtrue終了するまで使用し続けます。

私は通常これをdrt="/var/www/html"行いますが、変数制御フローを次の擬似コードのように作成する必要があります。

drt="/var/www/html XOR /srv/http"

もちろん、2つ以上のオプションのうちの1つだけが正しいので、これはXOR条件に基づいている必要があります。

Bashでこれを行う方法はありますか?

答え1

配布指向のドキュメントルートが何であるかをテストするために必要です(ディレクトリが存在するかどうかに応じて)。

次の 2 つのオプションを使用して、そのオプションが存在するかどうかを確認できます。[ -d dir ]

if [ -d /var/www/html ]; then
    drt=/var/www/html;
elif [ -d /srv/http ]; then
    drt=/srv/http
else
    echo "No HTTP server root directory found"
    exit 1
fi

またはループを使用してください。

drt=
for d in /var/www/html /srv/http; do
    if [ -d "$d" ]; then
        drt=$d;
        break 
    fi
done
if [ -z "$drt" ]; then
    echo "No HTTP server root directory found"
    exit 1
fi 

もちろん、これらすべては実際にディストリビューションのデフォルトのドキュメントルートを使用していると仮定していますが、そうではないかもしれません。ユーザーにスクリプトで見つかったディレクトリが正しいことを確認する機会を提供するのは悪い考えではないかもしれません。

関連情報