if-then 문을 사용하는 Bash 함수의 예기치 않은 마커 "}" 근처에 구문 오류가 있습니다.

if-then 문을 사용하는 Bash 함수의 예기치 않은 마커 "}" 근처에 구문 오류가 있습니다.

다음 스크립트를 파일에 저장하고 alias사용자의 파일에 스크립트를 만든 bashrc다음 파일을 가져옵니다 bashrc.

#!/bin/bash
domain="$1" && test -z "$domain" && exit 2

environment() {
    read -sp "Please enter the app DB root password:" dbrootp_1 && echo
    read -sp "Please enter the app DB root password again:" dbrootp_2 && echo
    if [ "$dbrootp_1" != "$dbrootp_2" ]; then echo "Values unmatched. Please try again." && exit 2 fi

    read -sp "Please enter the app DB user password:" dbuserp_1 && echo
    read -sp "Please enter the app DB user password again:" dbuserp_2 && echo
    if [ "$dbuserp_1" != "$dbuserp_2" ]; then echo "Values unmatched. Please try again." && exit 2 fi
}
environment

실행하면 alias domain다음과 같은 결과가 나타납니다.

+ /user/nwsm/nwsm.sh x
/user/nwsm/nwsm.sh: line 12: syntax error near unexpected token `}'
user/nwsm/nwsm.sh: line 12: `}'

구문 오류가 발생하는 이유는 무엇입니까? 구문 오류를 찾지 못했습니다. 너? 어쩌면 또 다른 문제가 있을 수도 있습니다.

Nano(또는 Visual Studio Code)에 외계인 문자가 표시되지 않습니다.

여기에 이미지 설명을 입력하세요

답변1

(문 끝) ;앞에 2개의 세미콜론()이 누락된 것 같습니다.fiif

다음은 올바른 if-then 문입니다.

if [ "$dbrootp_1" != "$dbrootp_2" ]; then echo "Values unmatched. Please try again." && exit 2; fi
if [ "$dbrootp_1" != "$dbrootp_2" ]; then echo "Values unmatched. Please try again." && exit 2; fi

fi각 줄 끝 부분에 앞에 있는 세미콜론을 확인하세요.

stderr의 Bash 오류가 다음과 같은 경우"6행과 10행에는 세미콜론이 있어야 합니다.", 질문과 답변을 게시하지 못할 수도 있습니다.

JavaScript로 Bash if-then 문을 작성하는 것은 생각보다 좀 더 장황한 것 같습니다.

관련 정보