Dans mon .bashrc
Je définis une fonction que je pourrai utiliser ultérieurement sur la ligne de commande :
function mycommand() {
ssh user@123.456.789.0 cd testdir;./test.sh "$1"
}
Lors de l'utilisation de cette commande, seul le cd
est exécutée sur l'hôte distant ; la commande test.sh
est exécutée sur l'hôte local. Cela est dû au fait que le point-virgule sépare deux commandes différentes : la commande ssh
et la commande test.sh
commandement.
J'ai essayé de définir la fonction comme suit (notez les guillemets simples) :
function mycommand() {
ssh user@123.456.789.0 'cd testdir;./test.sh "$1"'
}
J'ai essayé de garder le cd
et la commande test.sh
ensemble, mais l'argument $1
n'est pas résolu, indépendamment de ce que je donne à la fonction. On essaie toujours d'exécuter une commande
./test.sh $1
sur l'hôte distant.
Comment puis-je définir correctement mycommand
donc le script test.sh
est exécuté sur l'hôte distant après être passé dans le répertoire testdir
avec la possibilité de transmettre l'argument donné à mycommand
à test.sh
?