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 15/06/2011, 11h29   #1
Invité régulier
 
Inscription : février 2011
Messages : 35
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 35
Points : 9
Points : 9
Par défaut lecture écran - lien avec un programme c

Bonjour,

Je vous explique mon problème :

J'ai un script shell dans lequel j'exécute des commandes

Ensuite dans ce sript j'exécute un fichier c se trouvant dans le même répertoire :

ex :
Code :
1
2
gcc -o hello hello.c
./hello
ce programme s'il marche affiche par exemple "salut" dans le terminal


je voudrais ensuite écrire dans le fichier shell des commandes qui s'exécutent que lorsque le fichier c marche c'est à dire affiche salut à l'écran


mon idée :

Code :
1
2
3
4
if [ il y a salut d'afficher à l'écran ]
then
    mes commandes
fi


ou si il y a d'autre solution qui permette au script de voir que le programme affiche bien un mot


merci
albertopisto est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/06/2011, 14h10   #2
Membre éprouvé
 
Avatar de argoet
 
Inscription : mai 2002
Messages : 535
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 535
Points : 461
Points : 461
Vous pouvez charger la sortie de hello dans une variable

Code :
1
2
3
4
5
6
7
8
9
10
#!/bin/ksh
 
HELLO=`./hello`
 
if [ "$HELLO" = "salut" ]
then
    echo "Hello a généré salut"
else
    echo "KO"
fi
__________________
Signé : Capitaine Jean-Luc Picard
argoet est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 15/06/2011, 14h30   #3
Invité régulier
 
Inscription : février 2011
Messages : 35
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 35
Points : 9
Points : 9
Merci de la réponse !

imaginons que j'ai un fichier c avec plusieurs printf qui s'affichent

ex
Code :
printf("salut ca va\n"); printf("salut\n");

Y a-t-il une solution pour :

Code :
1
2
3
4
if [ "salut" s'affiche à l'écran quelque soit les autres "printf" ]
then
    mes commandes
fi
car la réponse précédente ne marche que si "salut" s'affiche et rien d'autres
albertopisto est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/06/2011, 22h22   #4
Membre éprouvé
 
Avatar de argoet
 
Inscription : mai 2002
Messages : 535
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 535
Points : 461
Points : 461
Ben oui

vous pouvez vous inspirer de ceci
Code :
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/ksh
 
# On lance le prg hello | on extrait que les lignes avec salut | et on les compte
HELLO=`./hello | grep -i salut |  wc -l`
 
# Si HELLO est plus grand que 0 (-gt=greater than)
if [ $HELLO -gt 0 ] 
then
    echo "Hello a généré salut"
else
    echo "KO"
fi
__________________
Signé : Capitaine Jean-Luc Picard
argoet est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 16/06/2011, 13h53   #5
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 980
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 980
Points : 6 095
Points : 6 095
Bonjour.

J'ajouterai qu'il existe une autre syntaxe pour stocker la sortie d'une commande dans une variable :

Une autre solution plus simple :

Code :
1
2
3
4
5
6
7
8
#!/bin/bash
 
if [ "$(./hello | grep salut)" != "" ] 
then
    echo "Hello a généré salut"
else
    echo "KO"
fi
Cordialement,
Idriss
ok.Idriss 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 21h08.


 
 
 
 
Partenaires

Hébergement Web