Bash의 제어 흐름 변수

Bash의 제어 흐름 변수

/var/www/html/Debian-Apache의 웹 애플리케이션 문서 루트는 일반적으로 /srv/http/.

배포 지향 문서 루트가 무엇인지 테스트하는 데 필요한 배포 독립적 LAMP 빌드 스크립트를 작성했으며(해당 디렉터리의 존재에 따라) true스크립트가 끝날 때까지 계속 사용할 것입니다.

저는 보통 이렇게 drt="/var/www/html"하지만 변수 제어 흐름을 다음 의사 코드와 같이 만들어야 합니다.

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

물론 두 개 이상의 옵션 중 하나만 맞으며 이는 XOR 조건을 기반으로 해야 합니다.

Bash에서 이 작업을 수행할 수 있는 방법이 있나요?

답변1

배포 지향 문서 루트가 무엇인지 테스트하는 데 필요합니다(디렉토리 존재 여부에 따라).

다음 두 가지 옵션을 사용하여 해당 옵션이 존재하는지 확인할 수 있습니다.[ -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 

물론, 이 모든 것은 실제로 배포판의 기본 문서 루트를 사용한다고 가정하지만 그렇지 않을 수도 있습니다. 사용자에게 스크립트에서 찾은 디렉터리가 올바른지 확인할 수 있는 기회를 제공하는 것은 나쁜 생각이 아닐 수도 있습니다.

관련 정보