쉘 스크립트 및 및 및 및

쉘 스크립트 및 및 및 및

이 스크립트가 있지만 작동하지 않습니다. -a 대신 &&를 사용해 보았지만 작동하지 않습니다. 아이디어는 매개변수 $1이 'normal', 'beta' 및 'stable'과 다를 때 오류와 함께 종료하는 것입니다.

if [ [ "$1" != "normal" ]  -a [ "$1" != "beta" ] -a [ "$1" != "stable" ] ]; then
    echo "Error, type parameter mode version: normal, beta, stable"
    exit
else
    echo "Site: ${1}"
fi

나는 또한 다음을 시도했습니다.

if [ [ "$1" != "normal" ]  && [ "$1" != "beta" ] && [ "$1" != "stable" ] ]; then

감사해요

답변1

여러 AND의 경우 다음을 사용하세요.

if [ condition ] && [ condition ] && [ condition ]
then
   code
fi

||예를 들어 OR( )에도 적용됩니다.

if [ "$1" = "normal" ] || [ "$1" = "beta" ] || [ "$1" = "stable" ]
then
    printf 'Site: %s\n' "$1"
else
    echo 'Error, type parameter mode version: normal, beta, stable' >&2
    exit 1
fi

귀하의 경우에는 다음을 사용할 수도 있습니다.

case "$1" in
    normal|beta|stable)
        printf 'Site: %s\n' "$1" ;;
    *)
        echo 'error' >&2
        exit 1
esac

관련 정보