Erro de sintaxe próximo ao token inesperado '}' em uma função Bash com uma instrução if-then [closed]

0

Guardei o seguinte script em um arquivo e criei um alias para esse arquivo no bashrc do usuário e, em seguida, originou esse 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

Quando executo alias domain , recebo esta saída:

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

Por que o erro de sintaxe? Eu não reconheci um erro de sintaxe. Você? Talvez haja outro problema.

Não vejo caracteres alienígenas no Nano (nem no código do Visual Studio):

    
por user9303970 04.03.2018 / 10:34

1 resposta

4

Parece que eu perdi 2 ponto e vírgula ( ; ) antes do fi (o fechamento da instrução if ).

Estas são as declarações if-then corretas:

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

Anote cada ponto e vírgula antes do fi , próximo ao final de cada linha.

Se o erro de Bash no stderr for algo como "Espera-se um ponto-e-vírgula nas linhas 6 e 10" , talvez eu não publique a pergunta e a resposta.

Parece que escrever uma declaração Bash if-then é um pouco mais detalhada do que, digamos, em JavaScript.

    
por 04.03.2018 / 10:34