Point d'exclamation dans une commande shell

Fermé
Bakuryu11 Messages postés 5 Date d'inscription lundi 16 avril 2012 Statut Membre Dernière intervention 5 août 2015 - 7 juil. 2014 à 17:04
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 7 juil. 2014 à 17:29
Bonjour,

Voilà je voudrais exécuter la commande suivante permettant de lister les fichiers d'un serveur en passant par SSH :
$mdp='mdp!*'
sshpass -p $mdp ssh root@serveur.local 'cd /var/www; ls'

Or, le script me renvoie l'erreur suivante :
Aucun fichier ou dossier de ce type

Ceci s'explique par le fait que le point d'exclamation dans le mot de passe est exécuté.
Je suis bien sûr au courant des procédés pour contourner ce problème, notamment de mettre des guillemets autour du contenu de la variable ou un backslashe devant le point d'exclamation comme ceci :
sshpass -p 'mdp!*' ssh root@serveur.local 'cd /var/www; ls'
sshpass -p mdp\!* ssh root@serveur.local 'cd /var/www; ls'

Le problème c'est que je passe par une variable et donc les guillemets ou les backslashes ne sont pas pris en compte.

Si quelqu'un a une solution à mon problème...

Merci par avance pour votre aide,

Bakuryu11

1 réponse

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
7 juil. 2014 à 17:29
Salut,

T'as essayé avec
mdp='mdp\!*' 
?
1