Resolva o problema do BASH UNARY Operator esperado

Resolva o problema do BASH UNARY Operator esperado
Os erros têm um número diversificado de tipos e razões quando se trata de programação de Bash. Um desses erros é o erro "Operador Unário esperado" na programação de bash. Ao avaliar expressões em declarações condicionais, você pode encontrar o problema "Operador Unário esperado". As razões para esse erro "Bash Uneary Operator esperado" pode ser diversificado. Começaremos falando sobre o que está criando o problema. Depois disso, examinaremos algumas opções para resolver este problema. Vamos começar com o artigo de hoje criando um novo arquivo Bash no Ubuntu 20.04 Sistema. Para isso, precisamos utilizar a instrução "toque" no terminal do shell e nomear o arquivo "unário.sh ”. $ toque unário.sh
$ nano UNILY.sh

Exemplo

Começaremos nosso primeiro exemplo para este artigo, criando um novo código Bash no “UNARY.arquivo sh ”. Utilizaremos a declaração condicional para a ilustração deste erro. Dentro deste arquivo de código, adicionamos o suporte bash na primeira linha como “#!/Bin/Bash ”. Estamos tentando a declaração de leitura para receber a entrada do usuário com a opção "-p" e adicionar essa entrada à variável "V.”A declaração if-else está aqui para verificar a condição. Está verificando se o valor inserido por um usuário na variável "V" é igual ao número 14 ou não. Para verificar a igualdade, usamos o operador de comparação "-eq". Se o valor agregado por um usuário for correspondido pelo número 14, a parte "então" exibirá "Value correspondente" com a ajuda de uma cláusula "Echo". Caso contrário, a parte else vai executar sua declaração "Echo" exibindo a mensagem "Valor não correspondente" no shell. O código está completo aqui e podemos executá -lo agora.

Depois de salvar o código Bash, executamos com a instrução Bash. Acontece que pede a entrada do usuário. Um usuário adicionou o valor "67" no campo e pressionou Enter. Como o valor não corresponde ao valor especificado na condição "se", a parte "else" foi executada e exibida "valor não correspondente", conforme apresentado na saída mostrada abaixo.

$ bash unary.sh

Isso foi sobre o uso de algum valor numérico para executar a comparação. Vamos executar nosso código mais uma vez para fazer com que ocorra o erro "Operador Unário esperado" em nosso shell. Então, tentamos o código mais uma vez e, no campo de entrada, pedindo um valor para entrar, não inserimos nada (deixou em branco) e pressionamos o botão "Enter" para continuar. De repente, isso nos dá o erro “Operador de Uneary” na linha 3 do código. Depois disso, ele simplesmente exibiu a mensagem "Valor não correspondente" usando a parte da condição mencionada no código.

$ bash unary.sh

Embora tenhamos encontrado o erro "Operador unário esperado" na área de saída no terminal, não podemos reconhecer o principal motivo deste erro. Para encontrar o principal motivo para esse problema, precisamos depurar o código do arquivo Bash. Para isso, precisamos usar a opção "-xv" dentro da instrução Bash seguida pelo nome do arquivo começando com. "/" como mostrado. Ele depurará cada linha do nosso código e mostrará a linha de erro também. Isso mostra que a linha de erro é "[-eq 14]". Ele não mostra o "$ v" como especificamos no código. A razão para esse erro é que o uso do espaço fará com que a expressão do lado esquerdo eu.e., "$ V", desaparece da condição.

$ bash -xv ./unário.sh

Para impedir que esse script jogue o erro de "operador unário" no Bash, precisamos atualizar o código mais uma vez. Temos que adicionar as citações duplas em torno da expressão esquerda "$ v", como fizemos na imagem abaixo. O restante do código permanecerá inalterado por enquanto. Agora, o código está pronto para uso. Temos que salvá -lo primeiro com “Ctrl+S” e sair do arquivo com “Ctrl+X.”

Após a execução do arquivo Bash atualizado com a consulta Bash, o usuário pressionou novamente Enter sem inserir nenhum valor no campo de entrada na frente do texto "Digite algo". Agora, o operador unário esperado erro foi removido, mas outro erro ”, esperou a expressão inteira”, surgiu. Mas também mostra a mensagem de exibição de que o valor inserido por um usuário não corresponde ao número 14. Então, precisamos descobrir a solução para este erro.

$ bash unary.sh

Como sabemos que estamos usando o operador de comparação "-eq" para comparar alguns valores com o número inteiro 14. Ele lançará uma exceção porque o operador de comparação "-eq" é projetado e usado apenas para a comparação de valores ou variáveis ​​de string. Para comparar o número de números inteiros em Bash, precisamos utilizar o operador de atribuição "=" para verificar se os dois valores são iguais ou não. Vamos salvar este código atualizado para ver o resultado.

Após essa execução atualizada do código Bash, o usuário não entrou novamente e simplesmente pressionou "Enter" para continuar. Desta vez, não temos nenhum erro. Isto é por causa do uso do operador "=". Em troca, ele executou a cláusula "else" e exibiu uma mensagem "Valor não correspondente".

$ bash unary.sh

Outra maneira de evitar encontrar o erro esperado do operador unário em nosso shell de terminal é usar os suportes duplos "quadrados" no início e no final da condição "se" ao usar o operador de comparação "-eq" para qualquer tipo de valor. Então, fizemos isso como mostrado abaixo.

Depois de pressionar "Enter", o usuário não recebe nenhum erro ao executar.

$ bash unary.sh

Conclusão

Isso se trata do uso de diferentes métodos para resolver o erro Bash “Operador unário esperado.”Ao fazer isso, encontramos outro erro,“ Expressão inteira esperada ”, e nós o resolvemos também. Você pode alterar o exemplo acima e resolver seu erro de bash.