while 루프 내에서 사용자 입력을 받아들이는 방법

while 루프 내에서 사용자 입력을 받아들이는 방법

저는 쉘 스크립팅을 처음 접하고 사용자가 올바르게 입력했는지 확인할 때까지 계속해서 입력하라는 메시지를 표시하는 루프를 만들려고 합니다. 이를 위해 while 루프를 사용하려고 하는데 오류가 발생합니다.

joyentmac2252:scripts jessebutryn$ ./bashprofilemod.sh
Please enter your Joyent Public Cloud (JPC) username and press [ENTER]: 
jesse.butryn
The username you entered is: jesse.butryn Is this correct? y/n :n
./bashprofilemod.sh: line 13: syntax error near unexpected token `fi'
./bashprofilemod.sh: line 13: `  fi'

지금까지의 전체 스크립트는 아래에 있습니다. 정말 더럽다면 죄송하지만 아직 이해하는 중입니다. 다음 단계로 넘어가기 전에 while 루프를 작동시키려고 하기 때문에 아직 완료되지 않았습니다.

#!/bin/sh
#Prompts user for their Joyent Cloud username (usually first.last)
read -p "Please enter your Joyent Public Cloud (JPC) username and press [ENTER]: " username
#Confirms user input
read -p "The username you entered is: $username Is this correct? y/n :" uconf
#
while [ $uconf = "N" -o $uconf = "n" ]
do
  read -p "Please enter your Joyent Public Cloud (JPC) username and press [ENTER]: " username
  read -p "The username you entered is: $username Is this correct? y/n :" uconf
  if [ $uconf = "Y" -o $uconf = "y" ]
    echo "Thanks your username will be entered as: $username$."
  fi
done

어떤 조언이라도 감사드립니다

답변1

then이 두 문을 사용하지 않았습니다 if.

if [ $uconf = "Y" -o $uconf = "y" ];then
    echo "Thanks your username will be entered as: ${txtcyn}$username${txtrst}."
 fi



 if [ $kconf = "Y" -o $kconf = "y" ];then 
     echo "Thanks your ssh public key will be entered as: ${txtcyn}$HOME/.ssh/$sshkey${txtrst}."
 fi

관련 정보