--) bash의 사례 구조에서 무엇을 의미합니까?

--) bash의 사례 구조에서 무엇을 의미합니까?

케이스 구조가 포함된 코드 조각을 보았습니다.

while true;
do
    case "$1" in
        --prepare)
            echo "prepare"
            ENV_PREPARE
            exit 0
            ;;
        --sleep)
            SLEEP_TIME=$2
            shift 2
            ;;
        --)
            shift
            break
            ;;
        *)
            echo "Internal error!"
            exit 1
            ;;
    esac
done

--)는 bash의 사례 구조에서 hrer를 의미합니까?

        --)
            shift
            break
            ;;

답변1

배쉬에 특별한 의미는 없습니다.

해당 코드 조각의 작성자는 다른 문자 없이 두 개의 하이픈만 일치시키길 원했습니다. 문자 그대로 "--".

특히 GNU 유산의 많은 Unix 명령줄 도구를 사용하면 "--"를 구분 기호로 사용하여 "이 지점 이후에는 아무것도 옵션으로 처리할 수 없습니다. 이 명령줄의 나머지 부분은 인수(예: 파일에 대해 작동하는 명령의 파일 이름 목록)로 구성됩니다. 이렇게 하면 다음을 입력하여 "--help"라는 파일을 삭제할 수 있습니다.

 rm -- --help

rm"--help"가 도움말 문을 보기 위한 긴 옵션이라고 생각 하지 않게 됩니다 . (이것은 좋지 않은 예이지만 내 말을 이해하실 것이라고 생각합니다.)

내 생각엔 그 스크립트의 작성자가 그의 스크립트에서 "--"가 그렇게 작동하도록 만들고 싶었던 것 같습니다.

관련 정보