Remove os espaços entre a variável e seu valor.
USER='user'
PASS='password'
FILE='path/filename.txt'
A atribuição em scripts bash não pode ter espaços ao redor do =
Para entender mais, =
também é operador de comparação. veja este exemplo:
if [ "$a" = "$b" ]
Observeoespaçoembrancoqueenquadrao=
.Nestecaso,estamoscomparando"$a"
e "$b"
.
if [ "$a"="$b" ] is not equivalent to the above.
Teste com o exemplo:
kasiay@kasiyaPC~:$ a=2
kasiay@kasiyaPC~:$ b=3
Em seguida, executamos if [ "$a" = "$b" ]; then echo "equal"; else echo "not equal"; fi
, o resultado " não é igual a " e é um resultado verdadeiro.
Mas se executarmos if [ "$a"="$b" ]; then echo "equal"; else echo "not equal"; fi
, o resultado será " igual " e o resultado é errado !!
Por que neste caso estamos errados?
Quando estamos usando if [ "$a"="$b" ]
, ele é analisado como if [ A_TOKEN ]
, então, neste caso, a condição if sempre retorna um resultado verdadeiro. por exemplo:
if [ "$a"="$b" ]; then echo "TRUE"; fi
#result is TRUE
if [ 2=3 ]; then echo "TRUE"; fi
#result is TRUE
if [ anything ]; then echo "TRUE"; fi
#result is TRUE
E, finalmente, quando você estiver usando USER = 'user'
(não sei qual seção analisa isso), você está obtendo "não encontrado" . e por que é "não encontrado" ?? desde o analisador procurando valor da variável USER para comparar com o valor 'user'. e é " não encontrado " certo?