Corrigir erro de sintaxe Bash próximo ao token inesperado

A codificação no Linux Bash Terminal tornou-se uma prática predominante no setor de codificação. Os engenheiros de software e os alunos que aprendem a linguagem de codificação se deparam com vários erros. Se você viu repetidamente os erros como erro de sintaxe próximo ao token inesperado ‘(‘ ou erro de sintaxe Bash próximo ao token inesperado, você pode tentar confiar nos métodos descritos no artigo e se tornar um codificador proficiente. Leia os métodos descritos no artigo na seção ordem descrita e corrija os erros nas linhas de comando em seu arquivo.

Como corrigir erro de sintaxe Bash próximo ao token inesperado

Linux Bash é um interpretador de linha de comando para o sistema baseado em Linux e é um substituto para o Bourne Shell ou sh. Os arquivos são nomeados usando o formato .sh no script Linux Bash. Se houver problemas de formatação no código no script de shell, você poderá enfrentar um erro de sintaxe. Se o erro estiver próximo do caractere (, o shell irá avisá-lo do erro na linha e exibirá o erro na linha correspondente. Como o Linux Bash é um interpretador, a linha com o erro será retornada para você em o Terminal e ele parará de verificar o resto dos comandos no script. Portanto, você precisa corrigir o erro na linha de comando específica e prosseguir para a próxima para corrigir o erro inesperado de token no script de shell. As causas da sintaxe erro próximo ao token inesperado no Linux Bash estão listados abaixo nesta seção como abaixo:

  • Codificação com sequências de escape – Se você escreveu os códigos no script Bash, as sequências de escape ou as aspas no script podem causar erros. As seqüências de escape e aspas devem ser escritas no formato correto para corrigir o erro.

  • Sintaxe incorreta no arquivo de codificação – A sintaxe no código pode dar o erro de sintaxe se o comando for escrito na sintaxe errada, como alterar a ordem dos loops.

  • Uso incorreto do comando – Se você não estiver usando o comando corretamente, como atribuição de valor incorreta, pode haver um erro de sintaxe.

  • SO incompatível nos sistemas – Se o shell para o script de codificação não for compatível entre os sistemas Unix e DOS, você pode ter um erro inesperado.

  • Problemas no script do shell bash – Os problemas executados no script do shell bash no arquivo copiado de outro sistema podem gerar um erro de token inesperado.

Considere um arquivo chamado example.sh criado no script Linux Bash com as seguintes linhas de comando para fins explicativos. O arquivo de exemplo tem as possibilidades de erros de sintaxe e inclui todos os comandos possíveis que podem ser usados ​​no script de shell.

str= ‘First command line of ‘(example file)’ in the script’
str= [(1,2),(3,4)]
if[ $day == “mon” ] then
 echo “mon”
else
 echo “no mon”
fi
for VARIABLE in {0..2}; then
do echo command1; echo command2; echo command3; echo command4; done
while true; do if [ $ day == “mon” ]; then echo “mon”; else echo “not mon”; done; fi

Método 1: corrigir erros manualmente em cada linha de comando

O primeiro método para corrigir os erros é corrigir o erro de sintaxe manualmente em cada linha de comando no script. As etapas para resolver os erros de sintaxe próximos ao token inesperado nas linhas de comando são discutidas nesta seção. O processo para corrigir o erro inesperado de token no Terminal é descrito abaixo. Execute o arquivo no Terminal digitando o comando ./example.sh e pressionando a tecla Enter.

2. Observe as linhas que apresentam o erro de token inesperado nas linhas de comando no resultado abaixo.

3. Corrija o erro em cada linha seguindo os métodos discutidos abaixo individualmente e salvando o arquivo.

4. Execute o arquivo novamente após as alterações e verifique se o erro de sintaxe foi resolvido no arquivo.

Etapa I: Ler o conteúdo do arquivo

O primeiro passo para resolver o erro de sintaxe nas linhas de comando é ler o arquivo no Terminal. SE houver problemas com o arquivo, talvez você não consiga visualizá-lo. A prática regular de visualizar o arquivo é executá-lo usando o comando ./example.sh, mas você não pode modificar o conteúdo do arquivo. As opções para visualizar o conteúdo do arquivo e modificar as linhas de comando para corrigir o erro de sintaxe próximo ao token inesperado ‘(‘ são discutidas abaixo.

Opção 1: Através do Comando CAT

A primeira opção é usar o comando cat para visualizar o arquivo no shell script. Leia o conteúdo do arquivo com o erro de token inesperado usando o comando cat digitando o comando cat –v example.sh no Terminal.

Nota 1: O example.sh é usado para fins explicativos e você precisa digitar o nome do arquivo que possui o erro de token inesperado.

Nota 2: O comando cat –v é usado para exibir todos os caracteres invisíveis que provavelmente representam o retorno de carro ou o espaço no-break.

Opção 2: através do comando VX

Se você não puder usar o comando cat, tente usar o comando vx para visualizar e alterar os comandos no arquivo usando a etapa abaixo. Digite o comando sh –vx ./example.sh no Terminal para abrir o arquivo.

Opção 3: Através do comando od –a

3. Se houver alguns caracteres invisíveis nas linhas de comando, você pode usar o comando od –a para visualizar o arquivo. Se o conteúdo do arquivo não estiver visível no arquivo de código, você pode tentar ler o arquivo usando o comando od –a example.sh para modificar o código.

Etapa II: Remover quebras de linha do Windows

Se houver quebras de linha do Windows no script de shell, você poderá usar os comandos do console para remover as quebras de linha e copiar as linhas de código para um novo arquivo para corrigir o erro.

Digite o comando a seguir no Terminal para salvar o conteúdo do arquivo em outro arquivo chamado correctedexample.sh para remover as quebras de linha do Windows no script.

tr –d ‘r’ <example.sh> correctedexample.sh

Etapa III: definir permissões para o arquivo recém-criado

Você precisa definir a permissão para o arquivo recém-criado para editar o arquivo para que o arquivo possa ser executado no shell. Digite o comando como chmod 755 correctedexample.sh no Terminal para fornecer as permissões ao arquivo e executá-lo. Agora você pode visualizar o arquivo corrigido e corrigir os problemas de formatação e corrigir o erro de sintaxe próximo ao token inesperado ‘(‘ no arquivo.

Etapa IV: Formatar o código no arquivo

A segunda etapa é formatar as linhas de código individualmente e alterar as linhas de comando manualmente no arquivo. As opções para formatar o arquivo para corrigir o erro de sintaxe próximo ao token inesperado ‘(‘ são discutidas abaixo nesta seção.

Opção 1: substituir aspas simples por aspas duplas

Se você estiver usando aspas simples nas linhas de comando, precisará alterar o comando substituindo as aspas simples por aspas duplas para corrigir o erro de sintaxe. No arquivo example.sh, remova as linhas de código que têm ‘ e ‘ ou aspas simples no comando e substitua as aspas simples por aspas duplas ou ” e ”. Aqui, no arquivo de exemplo, você precisa alterar o código como str= “Primeira linha de comando de “(arquivo de exemplo)” no script”

Nota: As aspas duplas são necessárias para os comandos de tipo de parâmetro como str= “[(1,2),(3,4)]”.

Opção 2: adicionar $ às linhas de string

Se você adicionou valores de string ao script, você precisa adicionar um $ aos valores de string para corrigir o erro de sintaxe no script. Adicione o $ para as linhas de comando com os valores de string para corrigir o erro inesperado. Aqui, no arquivo de exemplo, altere a linha de comando como;

str= $ ‘First command line of ‘(example file)’ in the script’

Observação: se você estiver usando $ no valor da string, poderá ignorar a sequência de escape de barra invertida, pois as linhas de comando são decodificadas pelo padrão ANSI C. Em outras palavras, usando um $ para valor de string, você pode evitar usar aspas duplas em vez de aspas simples nas linhas de comando.

Opção 3: converter tabulações em espaços

Os espaços que você deixou entre duas instruções no comando devem ser espaços em vez de tabulações para corrigir o erro de sintaxe no script. Se você estiver recebendo o erro no Cygwin, tente converter as guias nos códigos em espaços para corrigir o erro. A linha de comando é fornecida abaixo como;

do echo command1;       echo command2;             echo command3;             echo command4;             done

O comando acima deve ser reescrito conforme mostrado abaixo para corrigir o erro.

do echo command1; echo command2; echo command3; echo command4; done

Opção 4: use caracteres de escape

Se você estiver usando um caractere bash, é importante usar um caractere de escape junto com o caractere bash para corrigir o erro de sintaxe. Os parênteses ou () são caracteres especiais bash no arquivo, portanto, você precisaria usar o caractere de escape ou a barra invertida na linha de comando para escapar dos caracteres normais para executar o comando. O comando str= ‘Primeira linha de comando de ‘(arquivo de exemplo)’ no script’ não daria um erro no Terminal, pois o caractere de escape é usado.

Opção 5: use espaço entre os caracteres

O script de shell reconhece os comandos e instruções no script pelos valores padrão. Você precisa garantir o uso adequado do espaço entre os caracteres para que o shell possa identificar o comando fornecido no script. O espaço é um caractere usado para diferenciar dois caracteres na linha de comando. No código, não há espaço entre o if e [, which gives the unexpected token error as the if[ command is not identified by the shell. If the code is changed to if [ $ day == “mon” ]; então o erro pode ser resolvido como o comando shell boletim se for identificado pelo shell.

Opção 6: use o separador de comandos para instruções

Os vários comandos no script de shell precisam ser separados em instruções para que o Terminal identifique comandos individuais. Você precisa usar um separador de comando para corrigir o erro de sintaxe no Linux Bash. As instruções no comando precisam ser separadas por um separador de comando, como um ponto e vírgula ou um ; ou uma nova linha pressionando a tecla Enter. Por exemplo, o comando no código if [ $ day == “mon” ] então tem que ser alterado como se [ $ day == “mon” ]; então para corrigir o erro. Como o ponto e vírgula é usado como separador de comandos entre os caracteres [ and then, you can fix this error.

Option 7: Remove Additional Statements

Sometimes, you may have added additional statements or may have mixed up the codes in case of multiple nested loops. You need to remove the additional statements on the command lines to fix the Syntax error near unexpected token ‘(’ in the Linux Bash. The bash loops for…done or and the constructional constructs if… fi needs to be in the correct syntax. The example file has the wrong syntax in the for loop has the term then which is used in the if statement. Modifying the code as the following code will fix the unexpected token error. The statement then is an additional statement in the code and removing the term will fix the error.

for VARIABLE in {0..2}; do echo command1; echo command2; echo command3; echo command4; done 

Option 8: Ensure Order of Closing of Statements is Correct

If you are using many nested or conditional construct statements in the shell script, you have to ensure that the loops are closed in the order they are opened. You can use a new line separator to avoid conflicts with the loops. The order of closing the nested loops and conditional statements should be correct and must not be altered. The loops in the code while true; do if [ $ day == “mon” ]; então ecoe “mon”; senão echo “not mon”; feito; fi precisa ser fechado na ordem correta. Alterar o código conforme mostrado abaixo pode corrigir o erro de token inesperado, pois a ordem de fechamento das instruções é corrigida.

while true; do if [ $ day == “mon” ]; then echo “mon”; else echo “not mon”; fi; done

Método 2: reescrever código

Se você copiou o código e o colou em um novo arquivo no Terminal, você pode tentar reescrever o código manualmente para corrigir o erro. Os erros no código podem ser corrigidos se você tiver escrito o código sem erros de formato no script de shell. Isso ocorre porque os caracteres ocultos e os problemas de formatação no editor de texto, como o Microsoft Word, você pode ter usado para copiar e colar o código podem ter dado o erro.

Método 3: Use o comando Dos2unix.exe

Se estiver usando um sistema operacional Unix, você pode escrever códigos com o caractere de avanço de linha como n para passar para a próxima linha no arquivo. No entanto, se você estiver usando um sistema operacional Windows, precisará passar para a próxima linha no código usando o retorno de carro e o avanço de linha ou o rn no arquivo. Se você executar o código escrito no sistema operacional Windows no Cygwin, poderá obter o erro de sintaxe próximo ao token inesperado ‘(‘.

Para corrigir o erro, você precisa limpar os caracteres de retorno de carro usando a ferramenta de linha de comando DOS para Unix como um conversor de formato de arquivo de texto. Digite o seguinte comando como dos2unix.exe example.sh no Terminal e você pode converter o arquivo para o formato Unix.

***

O artigo discutiu os métodos básicos para corrigir o erro de sintaxe Bash próximo ao token inesperado ‘(‘ no script. Se você estiver usando um Bash Linux, poderá usar os métodos explicados nesta seção para corrigir o erro de sintaxe Bash próximo ao token inesperado. leu todo o artigo e achou o conteúdo útil, por favor, deixe-nos saber suas sugestões e dúvidas na seção de comentários.

  50 imagens de papel de parede mais bonitas