Como faço para me livrar do comando não encontrado?

0

Eu sou novo no shell script e atualmente estou enfrentando um problema que não consigo resolver, que existe.

Este é o erro:

vmw_ubuntu@vmwubuntu:~$ BookInv
/home/vmw_ubuntu/BookInv: line 155: [=: command not found

Este é o meu código (um loop simples)

#!/bin/bash
until [$number= "7"];do 
bla bla bla
echo -n "Please enter your option : "
read number
case $number in
7) exit;;
*) echo "Please enter number from 1-7"
esac
done

Meu código ainda funciona perfeitamente bem só que toda vez que meu loop reinicia esse erro aparece e não consigo encontrar uma solução para isso.

Basicamente, o que eu quero é me livrar desse erro "comando não encontrado" há algo de errado com meus códigos?

O problema é que eu tentei omitir os espaços e colocar o "on my $ number no entanto, o problema ainda persiste.

Para o comentário sobre sim, a mensagem de erro reclama sobre

[=

e definindo significa

number=0

mas isso não resolve meu problema, ele ainda me mostra o erro. Eu tenho outros códigos nele apenas algumas funções, mas este problema tem estado lá o tempo todo e não parece ser afetado pelas funções como eu removi todas as funções e tentei.
Meu programa ainda funciona, mas continue enviando essa mensagem de erro para mim:

vmw_ubuntu@vmwubuntu:~$ BookInv
/home/vmw_ubuntu/BookInv: line 155: [=: command not found
    
por user544018 12.01.2016 / 06:29

1 resposta

2

Como não há linha 155 em seu script, acredito que corresponda à linha 2 do que você nos mostrou.

Você tem atualmente

until [$number = "7"];do

Espaços são importantes no bash, e um teste requer espaços dentro dos parênteses. [ é um alias para test . Então você precisa pelo menos ter

until [ $number = " 7" ]; do

No momento, como $number está vazio, o bash tenta chamar um comando [= . Como $number pode estar vazio ou conter espaços, você também deve citá-lo para que ele conte como um e apenas um argumento. A linha deve ser

until [ "$number" = "7" ]; do

(As aspas em torno de 7 são realmente desnecessárias, mas não podem doer)

    
por 12.01.2016 / 07:20