%20%EB%8F%84%EC%99%80%EC%A3%BC%EC%84%B8%EC%9A%94!.png)
여기서 내가 뭘 잘못한 걸까요? 스크립트를 실행하고 변수를 설정한 후 중지하면 잘못된 변수가 있다고 표시됩니다.
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 프로그래밍에 대한 일반적인 소개는 예를 들어 다음에서 찾을 수 있습니다.