O arquivo SH não está sendo executado com sucesso

0

Eu sou novo no linux. Tentando executar o arquivo sh que conecta o servidor via FTP ou VSFTPD e obter alguns arquivos. Aqui está o meu script

#!/bin/sh
HOST='IP_ADDR'
USER = 'user'
PASS = 'password'

FILE = 'path/filename.txt'

ftp -n $HOST <<END_SCROPT
quote USER $USER
quote PASS $PASS
get $FILE

quit 
END_SCRipt
exit 0

Quando tento executar este arquivo: sh file.sh isso gera erro:

file.sh: 3: file.sh: HOST: not found
file.sh: 4: file.sh: USER: not found
file.sh: 5: file.sh: PASS: not found
file.sh: 7: file.sh: FILE: not found
Not Connected.
Not Connected.
Not Connected.
    
por Sarz 30.09.2014 / 08:00

1 resposta

1

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?

    
por sddgob 30.09.2014 / 08:04