arquivo de script de shell (.sh) - comando dinâmico

1

Eu estou tentando construir um comando dinâmico para executar em um arquivo .sh, no entanto, quando eu faço isso, parece que de alguma forma ele adiciona caracteres para que o comando não seja executado corretamente.

Observe que estou executando isso no Windows, usando bash.exe. Uma amostra de código:

Meu arquivo command.cmd:

bash --login -x command.sh Parameter1

Meu arquivo .sh:

#!/bash
#export PATH=.
cmd="ssh-agent bash -c 'ssh-add /cygdrive/C/$1/id_rsa & lftp -u myUser, -e \"mirror --verbose / /cygdrive/C$1/Output; bye\" sftp://domain.com -p 22'"
eval "$cmd"

Se eu executar o comando estaticamente, ele funcionará perfeitamente:

ssh-agent bash -c 'ssh-add /cygdrive/C/$1/id_rsa & lftp -u myUser, -e \"mirror --verbose / /cygdrive/C$1/Output; bye\" sftp://domain.com -p 22'

Mas se eu o executar como está no arquivo .sh, ele mostrará o seguinte:

C:\MyFolder\bin>command.cmd

C:\MyFolder\bin>bash --login -x command.sh Parameter1
+ cmd='ssh-agent bash -c '\''ssh-add /cygdrive/C/Parameter1/id_rsa & lftp -
u myUser, -e "mirror --verbose / /cygdrive/C/Parameter1/Output; bye" sft
'://sftp.domain.com -p 22'\''
+ eval 'ssh-agent bash -c '\''ssh-add /cygdrive/C/Parameter1/id_rsa & lftp
-u myUser, -e "mirror --verbose / /cygdrive/C/Parameter1/Output; bye" sf
'p://sftp.domain.com -p 22'\''
++ ssh-agent bash -c 'ssh-add /cygdrive/C/Parameter1/id_rsa & lftp -u myUser, -e "mirror --verbose / /cygdrive/Parameter1/Output; bye" sftp://sft
'.domain.com -p 22
Identity added: /cygdrive/id_rsa (rsa w/o comment)
'] '/' [Bad port '22.]

Meu palpite é que, como isso está rodando no windows, algo não está bem formado na variável de comando dinâmico, então o comando não roda bem. Se, em vez de eval, eu executar echo, a saída é:

C:\MyFolder\bin>command.cmd

C:\MyFolder\bin>bash --login -i command.sh Parameter1
ssh-agent bash -c 'ssh-add /cygdrive/C/Parameter1/id_rsa & lftp -u myUser, -e "mirror --verbose / /cygdrive/C/Parameter1/Output; bye" sftp://sftp.domain.com -p 22'

O que parece perfeito.

O que eu não estou fazendo aqui?

Obrigado.

    
por pacojones 12.12.2014 / 20:48

1 resposta

1

Não importa, descobri que era o Windows adicionando caracteres inválidos. Com o Notepad ++, salvar como Unix / Linux funcionou como um encanto.

    
por 16.12.2014 / 22:40