J'essaie de créer une commande dynamique à exécuter dans un fichier .sh. Cependant, lorsque j'y parviens, il semble que l'on ajoute en quelque sorte \r de sorte que la commande n'est pas correctement exécutée.
Notez que je l'exécute sous Windows, en utilisant bash.exe. Un exemple de code :
Mon fichier command.cmd :
bash --login -x command.sh Parameter1
Mon fichier .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"
Si j'exécute la commande de manière statique, elle fonctionne parfaitement :
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'
Mais si je l'exécute tel quel sur le fichier .sh, le résultat est le suivant :
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.]
Je pense qu'étant donné que le système fonctionne sous Windows, quelque chose n'est pas bien formé dans la variable de commande dynamique, de sorte que la commande ne s'exécute pas correctement. Si, au lieu de eval, j'exécute echo, la sortie est la suivante :
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'
Ce qui semble parfait.
Qu'est-ce que je ne fais pas ici ?
Nous vous remercions.