Tente este:
if [ 1 == 2 ]; then echo "y" ; fi
É melhor usar -eq
, a menos que você queira comparar 1 e 2 como uma string.
link Útil: ligação
Esta pergunta já tem uma resposta aqui:
Qual é o formato correto para if then?
Eu tentei muitas variedades.
O formato deve funcionar na linha de comando quando não estiver em um programa?
$ if [1==2] then echo "y" fi;
> ;
-bash: syntax error near unexpected token ';'
Tente este:
if [ 1 == 2 ]; then echo "y" ; fi
É melhor usar -eq
, a menos que você queira comparar 1 e 2 como uma string.
link Útil: ligação
A forma correta da construção bash if
é
if something; then command; fi
A forma correta do que você está tentando fazer é
if [ 2 -eq 2 ]; then echo "y"; fi;
Espaços são importantes no bash.
Ninguém explicou o erro ainda.
Você inseriu:
if [1==2] then echo "y" fi;
;
A primeira linha era uma sintaxe perfeitamente válida no que diz respeito ao shell. É da forma:
if cmd args
Nesse caso, cmd
é derivado da expansão do [1==2]
glob. [1==2]
é um padrão de globbing que se expande para a lista de arquivos no diretório atual cujo nome consiste em um caractere 1
, =
ou 2
.
Por exemplo, se houver um arquivo chamado 2
no diretório atual, isso se torna:
se 2 depois echo fi;
Execute o comando 2
com 4 argumentos: 2
, then
, echo
e fi
, como o primeiro comando na parte if
de uma instrução if/then/elif/else/fi
.
O erro vem do segundo ;
na segunda linha. Você teria a mesma mensagem de erro digitando ;
sozinho na linha de comando. ;
deve ser usado para separar comandos, não pode ser usado sozinho assim.
O operador ==
não existe no Bash. É -eq
ao comparar números ou =
ao comparar strings.
if [ 1 -eq 2 ]; then echo 'y'; fi
Tags command-line