Eu suspeito que parte do seu problema está no modo como você construiu seu heredoc. Experimente assim:
$ ftp -n ${FTP_HOST} << STOP
user ${FTP_USERNAME} ${FTP_PASSWORD}
binary
lcd ${FTP_FROM_DIR}
cd ${FTP_TO_DIR}
put ${reportFileName}
STOP
Se você realmente quer esses espaços / guias no comando, então você precisa mudar para esta forma de heredoc:
$ ftp -n ${FTP_HOST} <<-STOP
user ${FTP_USERNAME} ${FTP_PASSWORD}
binary
lcd ${FTP_FROM_DIR}
cd ${FTP_TO_DIR}
put ${reportFileName}
STOP
Sempre que você tiver espaços / tabulações em seu heredoc, precisará usar o <<-
para dizer ao shell para remover os espaços / tabulações iniciais antes de executar os comandos contidos nele.
Uma barra lateral no uso de eco
Quando você está analisando variáveis dentro de scripts e você usa inocentemente echo
para imprimir mensagens, você normalmente obtém mais do que apenas a sequência na qual está interessado. echo
também incluirá um caractere de nova linha à direita. Você pode vê-lo aqui neste exemplo:
$ echo $(echo hi) | hexdump -C
00000000 68 69 0a |hi.|
00000003
O 0a
é o código ASCII de uma nova linha. Então, você normalmente deseja desabilitar esse comportamento usando a opção -n
para echo
:
$ echo -n $(echo hi) | hexdump -C
00000000 68 69 |hi|
00000002
Ou melhor ainda, atualizar para usar printf
.