(나쁜 변수: 36행) 도와주세요!

(나쁜 변수: 36행) 도와주세요!

여기서 내가 뭘 잘못한 걸까요? 스크립트를 실행하고 변수를 설정한 후 중지하면 잘못된 변수가 있다고 표시됩니다.

qmail.script: 36: read: : bad variable name. 

도움을 주시면 감사하겠습니다.

unset PASSWORD
unset CHARCOUNT
echo
echo -n "Please Enter a Password For VqAdmin, Roundcube and QmailAdmin.
Password: "
stty echo
CHARCOUNT=0
while IFS= read "$PROMPT" -p -r -s -n 
do
    #Enter - accept password
    if [[ $CHAR == $'\0' ]] ; then
        break
    fi
    #Backspace
    if [[ $CHAR == $'\177' ]] ; then
        if [ $CHARCOUNT -gt 0 ] ; then
            CHARCOUNT=$((CHARCOUNT-1))
            PROMPT=$'\b \b'
            PASSWORD="${PASSWORD%?}"
        else
            PROMPT=''
        fi
    else
        CHARCOUNT=$((CHARCOUNT+1))
        PROMPT='*'
        PASSWORD=$CHAR
    fi
done
stty echo

답변1

나는 당신이 모든 코드를 보여주지는 않는다고 생각합니다. line 36실제로 read당신이 게시한 스니펫의 진술도 마찬가지입니다.

진술 read이 잘못되었습니다. IMHO 당신 말은

read -p "$PROMPT" -r -s -n1 CHAR
  • $PROMPT-p는 '*'를 인쇄하거나 입력 시 아무것도 인쇄하지 않는 의 매개변수입니다 .
  • -n한 번에 읽어야 할 문자 수를 알려주는 매개변수도 필요합니다.
  • 변수는 $CHAR나중에 사용되지만 다음에 의해 할당되지는 않습니다.read

또한 $PASSWORD연결하는 것을 잊었으므로 마지막 문자만 포함됩니다 PASSWORD=$CHAR.

PASSWORD+=$CHAR

또는

PASSWORD=${PASSWORD}${CHAR}

이러한 수정을 통해 코드는 내가 생각하는 대로 작동합니다. '별표 표시된' 비밀번호 프롬프트를 표시합니다.


여기에서 요청하면 완전하고 수정된 코드 조각을 얻을 수 있습니다.

unset PASSWORD
unset CHARCOUNT
echo
echo -n "Please Enter a Password For VqAdmin, Roundcube and QmailAdmin.
Password: "
stty echo
CHARCOUNT=0
while IFS= read -p "$PROMPT" -r -s -n1 CHAR 
do
    #Enter - accept password
    if [[ $CHAR == $'\0' ]] ; then
        break
    fi
    #Backspace
    if [[ $CHAR == $'\177' ]] ; then
        if [ $CHARCOUNT -gt 0 ] ; then
            CHARCOUNT=$((CHARCOUNT-1))
            PROMPT=$'\b \b'
            PASSWORD="${PASSWORD%?}"
        else
            PROMPT=''
        fi
    else
        CHARCOUNT=$((CHARCOUNT+1))
        PROMPT='*'
        PASSWORD+=$CHAR
    fi
done

귀하의 의견으로 볼 때 이 코드는 귀하가 직접 (전체)(?) 작성하지 않았으며 이해하는 데 약간의 어려움이 있습니다. 나는 그것이 무엇을 하는지 한 줄씩 설명하지 않을 것이다. 죄송합니다. 웹사이트를 자세히 읽어보시고 구체적인 질문이 있을 경우 다시 문의하시기 바랍니다. 좋은 설명 read과 옵션은 예를 들어입니다.여기에 주어진.

Bash 프로그래밍에 대한 일반적인 소개는 예를 들어 다음에서 찾을 수 있습니다.

관련 정보