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 24/01/2007, 15h08   #1
Invité régulier
 
Inscription : décembre 2006
Messages : 47
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2006
Messages : 47
Points : 8
Points : 8
Par défaut remplacement/interprétation de variables

salut,

voici mon script:
Code :
1
2
3
4
#!bin/sh
MY_PATH="/var/lib/ldap"
MY_FILE="/var/lib/ldap/test.fic"
echo -ne "$(grep -v "*" $MY_FILE)"
voici test.fic:
Code :
1
2
3
du texte
voici une variable: $MY_PATH
encore du texte

lorsque j'execute mon script, voici ce que j'obtiens:
Code :
1
2
3
du texte
une variable: $MY_PATH
encore du texte
mon problème se situe au niveau du remplacement de la variable $MY_PATH.
je souhaiterais qu'à l'exécution de mon script celle-ci soit remplacée par ça
valeur "/var/lib/ldap".

savez-vous si cela est possible, et si oui comment il faudrait que je m'y prenne.

merci.
Le fut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 15h19   #2
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
si je comprend bien le problème :
pourquoi rechercher "*" avec le grep ????
Code :
1
2
 
echo -ne $(grep -v $MY_PATH $MY_FILE)
ne serait pas plus exacte ?
tu desire bien toute les ligne SAUF celle avec le contenue de MY_PATH ?
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 15h27   #3
Invité régulier
 
Inscription : décembre 2006
Messages : 47
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2006
Messages : 47
Points : 8
Points : 8
non, je souhaite afficher le contenu du fichier et remplacer toutes les variables de mon fichier par leur valeur que j'ai définie dans mon script.
--> peut-être que mon utilisation de grep n'est pas judicieuse.

Le fut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 16h24   #4
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Il est tout à fait normal que cela ne fonctionne pas

Sans détails supplémentaire, je dirais qu'il suffit de mettre le tout dans un seul shell avec par exemple une boucle de lecture ligne par ligne
becket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 16h36   #5
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
s'il s'agit juste d'afficher utilise sed , genre :
Code :
1
2
 
sed s/\$MY_PATH/$MY_PATH/g test.fic
cela devrait fonctionner tres bien sans etre compliquer
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 16h52   #6
Invité régulier
 
Inscription : décembre 2006
Messages : 47
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2006
Messages : 47
Points : 8
Points : 8
ta solution a l'air intéressante, cependant la commande ne fonctionne pas.
j'ai un message d'erreur du genre:

sed: -e expression n°1, caractère 18: option inconnue pour `s'

où est l'erreur?

merci
Le fut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 16h58   #7
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 451
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 451
Points : 7 564
Points : 7 564
Autre solution, avec une boucle :
Code :
1
2
3
4
 
while read line
do eval print -- ${line} 
done < test.fic
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 17h06   #8
Invité régulier
 
Inscription : décembre 2006
Messages : 47
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2006
Messages : 47
Points : 8
Points : 8
il ne trouve pas la commande print !
Le fut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 17h14   #9
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
c'est a cause des caractere / dans la variable, une solution proteger dans la variables les / :
Code :
1
2
3
4
5
 
#!bin/sh
MY_PATH="\/var\/lib\/ldap"
MY_FILE="test.fic"
sed "s/\$MY_PATH/$MY_PATH/g"  $MY_FILE
resultat
Code :
1
2
3
4
 
du texte
voici une variable: /var/lib/ldap
encore du texte
sa fonctionne bien
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 17h27   #10
Invité régulier
 
Inscription : décembre 2006
Messages : 47
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2006
Messages : 47
Points : 8
Points : 8
en effet, cela marche , les variables prennent leur vrai valeur, mais toutes
la mise en forme (gras, souligné, ...) n'est pas appliquée. au lieu d'avoir la mise en forme, les sequence d'echappement s'affiche du genre \033[1mDESCRIPTION\033[0m

en réalité, le fichier que je souhaite afficher est un fichier d'aide, et je voudrais que son contenu s'adapte en fonction de la valeur des variables de mon script.

comment faire ?
Le fut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 17h31   #11
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
tout depend du logiciel d'aide (l afficheur)
mais quelque choses comme l'appelle a ton script pipe (|) l'afficheur d'aide pourrai resoudre le probleme.
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 17h36   #12
Invité régulier
 
Inscription : décembre 2006
Messages : 47
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2006
Messages : 47
Points : 8
Points : 8
pourrais-tu préciser, je comprend pas trop
Le fut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 17h53   #13
Invité régulier
 
Inscription : décembre 2006
Messages : 47
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2006
Messages : 47
Points : 8
Points : 8
j'ai réussi a faire afficher correctement mon fichier (mise en forme et variables) avec ça:
Code :
echo -ne "$(sed s/\$DATABASE_DIR/$DATABASE_DIR/g $HELP_FILE)"
mais le problème c'est que la commande 'echo' affiche tous le contenu d'un seul coup et moi je voudrais pouvoir naviguer dans l'aide avec les touches de direction et sortir avec une instruction du genre 'vi' où il faut tapper :q pour retrouver l'invite de commande.
--> connaitrais-tu un éditeur qui pourrais me permettre de faire cela et qui tiendrais compte de la mise en forme (la même syntaxe que pour echo).
Le fut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 18h10   #14
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
rajoute a la fin de ta commande un pipe less
Code :
1
2
 
echo -ne "$(sed s/\$DATABASE_DIR/$DATABASE_DIR/g $HELP_FILE)" | less
less utilise les fleches : haut et bas ainsi que page up et down.
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2007, 09h10   #15
Invité régulier
 
Inscription : décembre 2006
Messages : 47
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2006
Messages : 47
Points : 8
Points : 8
Merci MarcG pour ton aide.
Avec ta solution je peux bien naviguer avec les flèches, mais il reste tourjours les problèmes de mise en forme.

j'ai trouver une documentation pour fabriquer une page de man pour ma commande (http://oregnier.developpez.com/cours/unix/manpage/).

merci à tous,

A+
Le fut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2007, 12h40   #16
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 451
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 451
Points : 7 564
Points : 7 564
Citation:
Envoyé par Le fut
il ne trouve pas la commande print !
désolé... print c'est ksh
utilise echo à la place
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h41.


 
 
 
 
Partenaires

Hébergement Web