쉘 스크립트가 두 번 실행됨

쉘 스크립트가 두 번 실행됨

비밀번호를 설정하기 위해 쉘스크립트에 다음과 같은 작은 코드 조각이 있습니다.

if [[ -z "${PASS+x}" ]]; then
    read -p "enter pass or use default [test1234]" PASS
    if [[ -z "$PASS" ]]; then
        PASS="test1234"
    fi
fi


if [ $EUID != 0 ]; then
    sudo "$0" "$@"
    exit $?
fi

스크립트를 실행하면 읽기 명령이 두 번 실행됩니다. 이런 일은 일어나서는 안 됩니다. 누구든지 오류를 찾는 데 도움을 줄 수 있습니까?

전체 스크립트:github (수정됨)

답변1

연결한 전체 스크립트에는 다음이 포함됩니다.

if [ $EUID != 0 ]; then 
    sudo "$0" "$@" 
    exit $? 
fi 

read이는 모든 옵션 처리 및 질문에 표시된 호출 후에 수행됩니다. 내 생각에는 재시작 스크립트를 사용하여 이 코드 블록을 누르고 명령을 두 번 sudo누르는 것입니다 read. 한 번은 재시작 스크립트를 사용하기 전과 sudo한 번은 후에입니다.

관련 정보