Problème variable SSH

Bonjour @tous!!!
Autre petit problème que je rencontre…
La commande suivante située dans un script me pose problème:

ssh root@$HOST ‘find /home -iname “*.php” -exec grep “$DOMAIN” {} ; -print’ > cmdline-domaine-$HOST.txt

La variable $DOMAIN n’est pas interprété est apparait $DOMAIN et non pas sa valeur…
Quelqu’un aurait une solution ca me sauverait la vie :slightly_smiling: :slightly_smiling:
Merci d’avance!!!

Je suis très embété car mon script doit reposer sur des variables afin de pouvoir changer les paramètres facilement… :neutral_face:

Salut,

\ est dit caractère d’échappement : son rôle est d’empêcher l’interprétation par le shell du caractère $ qui le suit :slightly_smiling:

devrais marcher

devrais marcher

Petite explication sur la différence subtile, mais néanmoins importante entre le caractère ’ et le caractère " entourant un nom d’une variable shell.

 :-)  $ ESSAI="un_essai"
 :-)  $ echo $ESSAI
un_essai
 :-)  $ echo "$ESSAI"
un_essai
 :-)  $ echo '$ESSAI'
$ESSAI
 :-)  $ 

Ce qui prouve qu’avec le caractère ", le nom de la variable est interprétée, mais pas avec le caractère '.
Mais maintenant me direz-vous, quelle est la différence entre le caractère " et pas de caractère du tout ? :017
La réponse est à trouver du coté de la gestion des espaces… Le contenu d’une variable représentant un nom de répertoire d’un système de fichier gérant les espaces par exemple a besoin d’être protégé.

Oui, mais là le problème est plus subtile qu’utiliser les " ou les '.
Il y a plusieurs niveau d’imbrication de protection :
[ul]
[li]une pour le shell, pour qu’il passe une commande complète à ssh[/li]
[li]une pour le shell distant, pour qu’il gère tout comme il faut[/li][/ul]
Et l’idée c’est de passer à travers ces niveau d’imbrication une variable. L’astuce consiste à protéger partiellement la commande à passer en paramettre et de jouer sur le fait que le shell sait concaténer différentes partie protégé ou non sans problème.

Au sujet des protections, tout cela pourrait être remplacé par des \ :

Salut,

Leçon magistrale que je préfère à la correction pure et simple de la faute :slightly_smiling: Merci

[quote=“ggoodluck47”]Salut,

Leçon magistrale que je préfère à la correction pure et simple de la faute :slightly_smiling: Merci[/quote]
Pas toujours le temps, la motivation ou le courage de le faire.

Je ne peux que souscrire à cela :

Quand le niveau d’imbrication devient trop complexe pour le shell (qui en fait en ouvre plusieurs :119 ) ou qu’il dépasse notre entendement :wink:… Reste le caractère d’échappement “”.
L’arme ultime (mais lourde) !