Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/01/2012, 09h58   #1
 
Elodie BARDAJI
Inscription : novembre 2010
Messages : 15
Détails du profil
Informations personnelles :
Nom : Elodie BARDAJI

Informations forums :
Inscription : novembre 2010
Messages : 15
Points : -1
Points : -1
Par défaut Ecrire des instructions dans un autre fichier sh

Bonjour,

Cela peut paraître un peu compliqué, mais je lance un script sh pour créer un nouveau script sh.
La premier script sh est lancé sur une plateforme A pour trouver des liens. Le second est lancé sur une autre plateforme B pour créer ces liens.

Je suis dans le premier script sh. Le but est donc de ne faire qu'écrire un fichier avec des instructions. Mon problème est que je dois écrire un test dans le second script.

Code :
1
2
3
4
5
6
7
8
9
 
if [ -f $VERIFLINKDEST ]
then
            LINK=`echo "$LABEL$LINKNAME" | sed "s/\/vobs_tag\/infinity//g"`
            LINKMKDIR=`echo "\"${LINK%/*}\""`
            mkdir -p $LINKMKDIR
else
            #$LABEL$LINKDEST : Le fichier n'existe pas
fi
Le but serait donc d'écrire tout cela dans un fichier >>/data/clearcase/sortieLink_p.sh
J'ai un peu de mal à savoir comment faire cela puisque j'ai plein de caractère spéciaux comme " / `

Merci,

Elodie
Elodie11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 11h20   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 072
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 072
Points : 4 155
Points : 4 155
Bonjour,

en fait, tu veux exécuter des commandes sur le serveurB en utilisant les résultats du scriptA, qui, lui, est exécuté sur le serveurA ?
donc, passer des variables via ssh, c'est ça ?
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/01/2012, 15h23   #3
 
Elodie BARDAJI
Inscription : novembre 2010
Messages : 15
Détails du profil
Informations personnelles :
Nom : Elodie BARDAJI

Informations forums :
Inscription : novembre 2010
Messages : 15
Points : -1
Points : -1
Ce n'est pas vraiment des variables car j'écris le second fichier à partir du résultat du premier. Mais plutôt arriver à faire toto=if ... then ... else... fi
puis echo toto >>/sortieLink.sh

Merci,

Elodie
Elodie11 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 02/01/2012, 16h17   #4
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 072
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 072
Points : 4 155
Points : 4 155
en admettant que tu parviennes à écrire dynamiquement ton deuxième script
je continue à penser que ce n'est pas la bonne manière de faire, mais bon, «c'est vous qui voyez»,
quelle sera l'étape suivante ?

--
si tu veux que ce soit compliqué, ce sera compliqué, et ça te rebutera à force.
l'efficacité est bien souvent dans la simplicité et la fluidité.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/01/2012, 16h51   #5
Membre confirmé
 
Inscription : avril 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 188
Points : 222
Points : 222
Citation:
Envoyé par Elodie11 Voir le message
Bonjour,

Cela peut paraître un peu compliqué, mais je lance un script sh pour créer un nouveau script sh.
La premier script sh est lancé sur une plateforme A pour trouver des liens. Le second est lancé sur une autre plateforme B pour créer ces liens.

Je suis dans le premier script sh. Le but est donc de ne faire qu'écrire un fichier avec des instructions. Mon problème est que je dois écrire un test dans le second script.

Code :
1
2
3
4
5
6
7
8
9
 
if [ -f $VERIFLINKDEST ]
then
            LINK=`echo "$LABEL$LINKNAME" | sed "s/\/vobs_tag\/infinity//g"`
            LINKMKDIR=`echo "\"${LINK%/*}\""`
            mkdir -p $LINKMKDIR
else
            #$LABEL$LINKDEST : Le fichier n'existe pas
fi
Le but serait donc d'écrire tout cela dans un fichier >>/data/clearcase/sortieLink_p.sh
J'ai un peu de mal à savoir comment faire cela puisque j'ai plein de caractère spéciaux comme " / `

Merci,

Elodie
Bonjour Elodie,
je ne suis pas sûr d'avoir tout compris, mais je propose ceci:
pour écrire un "tout cela avec plein de caractères spéciaux" dans un fichier, le plus simple (amha) est d'utiliser "<<":

Code :
1
2
3
4
5
6
7
8
9
10
11
 
cat << EOT >>/data/clearcase/sortieLink_p.sh
if [ -f $VERIFLINKDEST ]
then
            LINK=`echo "$LABEL$LINKNAME" | sed "s/\/vobs_tag\/infinity//g"`
            LINKMKDIR=`echo "\"${LINK%/*}\""`
            mkdir -p $LINKMKDIR
else
            #$LABEL$LINKDEST : Le fichier n'existe pas
fi
EOT
Attention! Pour les variables ($VERIFLINKDEST $LABEL $LINKNAME etc.), si tu veux mettre dans "sortieLink_p.sh" la valeur qu'elles avaient sur la plateforme A, il faut laisser le script tel quel.
En revanche, si tu veux que l'expansion soit faite sur la plateforme B, il faut remplacer les "$" par des "\$".

Est-ce que cela répond à ta question?

)jack(
jack-ft est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h34.


 
 
 
 
Partenaires

Hébergement Web