If-Else 문이 작동하지 않습니다. 예상치 못한 토큰 "fi" 근처에 구문 오류가 있습니다.

If-Else 문이 작동하지 않습니다. 예상치 못한 토큰 "fi" 근처에 구문 오류가 있습니다.

나는 단지 파일 관리자인 스크립트를 작성하기 시작했고 사용자에게 선호하는 텍스트 편집기를 설정하도록 요청하는 기능을 설정하고 있는데 항상 오류 메시지가 표시됩니다.

/home/user/bin/manager: line 12: syntax error near expected token 'fi'
/home/user/bin/manager: line 12: 'fi'

코드는 다음과 같습니다.

#!bash/bin
#File managing shell
editor() {
read -p "What file editor would you like to use?    (Nano)  or  (Vi)m   " answer
export $answer=$(echo "$answer" | tr '[:upper:]' '[:lower:]')
if [ [ "$answer" -eq "nano" && "vi" && "vim" && "emacs" ] ]
then
editor="$answer"
else
echo "This is embarassing, I didn't understand your input..."
editor ()
fi
}
echo -e "" #this area tells the user he commands and etc. it takes forever to type...
sleep 1
editor()

내가 놓친 것이 있나요?

감사해요

답변1

두 번째와 세 번째

editor ()

그냥 해야 해

editor

괄호는 함수 정의에만 필요합니다.

bash의 파서는 ';'누락에 대해 불평 ()하지만 이는 문제의 일부일뿐입니다.

답변2

  • #!/bin/bashShebang 으로 사용됩니다 .
  • 불필요한 [ [...] ]
  • "$answer" -eq "nano" && "vi" && "vim" && "emacs"이 네 단어 답변은 테스트되지 않습니다.

기능 정의

while read -p "What file editor would you like to use?    (Nano)  or  (Vi)m   " answer
do 
  answer=$(echo "$answer" | tr '[:upper:]' '[:lower:]')
  case $answer in 
  ( nano | vi | vim | emacs )
     $answer ;
     ## OR
     export EDITOR=$answer
     break 
     ;;
    ( * )
     echo "This is embarassing, I didn't understand your input..."
     ;;
   esac
done
  • 답변이 유효한 편집자 4명 중 하나인지 확인합니다.
  • 값이 편집기에 반환됩니다.
  • export $answer=실패(처음)하거나 예상치 못한 결과(다음 번)가 발생할 수 있음
  • $answer편집자(또는 $answer "$myfile") 에게 전화를 걸 려면
  • export EDITOR=$answer설정을 위해 ,
  • 아니면 더 좋습니다 export EDITOR=$(which $answer).

관련 정보