Emitir com o script de shell depois de armazenar o diretório em uma variável

0

O FTP está se conectando ao servidor, mas estou recebendo um erro -

Enter if the env is dev or test or prod:
test
Please enter the id no :
xxxxxxx
Connected to xxxx
220 (vsFTPd 2.2.2)
331 Please specify the password.
230 Login successful.
**?Invalid command
?Invalid command
?Invalid command
?Invalid command
?Invalid command**
200 PORT command successful. Consider using PASV.

Abaixo está o script de shell -

#!/bin/bash
echo "Enter if the env is dev or test or prod:"
while :
do
read -r INPUT_STRING
case $INPUT_STRING in
    test | TEST)
        echo "Please enter id no : "
        read -r input_variable
        if [[ ${#input_variable} -ne "7" ]]
        then
            echo "Please check id no given"
            exit 1
        fi
        HOST=XXX
        USER=XXX
        PASSWORD=XX
        ftp -inv $HOST <<- EOF
                user $USER $PASSWORD
                mypath='/test/$input_variable/destination/'
                if ! cd "$mypath"
                then
                    exit 1
                fi
                mput x.csv
EOF
                exit 1
    ;;
esac
done
    
por chandra prakash 04.05.2016 / 07:42

3 respostas

1

Seu principal problema é que você acha que está configurando uma variável com sua linha mypath='/test/$input_variable/destination/' , mas na verdade ela é executada dentro da sessão FTP.

Você precisa movê-lo acima do comando FTP. Você também verifica as condições após ele que não podem ser verificadas lá pelo mesmo motivo.

    
por 04.05.2016 / 08:23
1

Seu problema é que você está tentando definir uma variável dentro de aqui-doc:

ftp -inv $HOST <<- EOF
    user $USER $PASSWORD
    mypath='/test/$input_variable/destination/'
    if ! cd "$mypath"
    then
        exit 1
    fi
    mput x.csv
EOF

Isso não pode funcionar. Mude essa parte para isso:

mypath="/test/$input_variable/destination/"
ftp -inv $HOST <<-_EOF_
    user $USER $PASSWORD
    cd "$mypath"
    mput x.csv
_EOF_
    
por 04.05.2016 / 19:41
0

Altere suas aspas simples para aspas duplas.

Em vez de:

mypath='/test/$input_variable/destination/'

Uso:

mypath="/test/$input_variable/destination/"
    
por 04.05.2016 / 08:26