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 13/09/2007, 10h47   #1
Candidat au titre de Membre du Club
 
Inscription : août 2004
Messages : 24
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : août 2004
Messages : 24
Points : 10
Points : 10
Envoyer un message via Yahoo à zebulon90
Par défaut [awk] Récupérer une commande system dans un awk

Bonjour à tous,

Alors, j'ai un petit problème concernant un awk.
Je n'arrive pas à récupérer le résultat de la commande system à l'interieur de mon awk.
Le résultat s'affiche correctement à l'écran mais je n'arrive pas à la récupérer dans ma variable Lun.

Voici un bout de mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
awk '
{        if ( $3 ~ /sd*/ && Lbaie ~ TypeBaie )
                {
                Disk[$i] = $3
                Path[$3] = Lpath

                #Recupere le nom de lun par rapport au disque
                Lun = system("scsiinfo -i /dev/"Disk[$i]" |grep Revision 
                       |cut -c 29-42")

                print Path[Disk[$i]]" "Disk[$i]" "Lun
                }
} '
Ai-je fait une erreur? ou est-ce tout simplement impossible?


Une petite question en passant:
Pour le awk : Peut-on imbriquer des awk comme suit:
Code :
1
2
3
4
5
6
7
 
awk'{ 
blabla
blabla
val= (awk'{balbla}' fichier)
blabla
}'fichier
Pour info:
OS: Linux
Shell : Ksh
Programmeur: toujours débutant
zebulon90 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 10h56   #2
Membre éprouvé
 
Avatar de alexp
 
Inscription : janvier 2006
Messages : 459
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : janvier 2006
Messages : 459
Points : 490
Points : 490
Envoyer un message via MSN à alexp
pour le cut tu peux alléger ta commande en faisant comme ceci :
ce qui signifie que tu veux garder la plage de caractère compris entre les caracteres n°29 et 42
__________________
Vous êtes mélomanes? allez voir harmoniedecharolles.no-ip.org
Tout est possible, tout est réalisable, le tout étant de savoir comment faire
astuces pc
gull villefranche
alexp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 10h58   #3
Candidat au titre de Membre du Club
 
Inscription : août 2004
Messages : 24
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : août 2004
Messages : 24
Points : 10
Points : 10
Envoyer un message via Yahoo à zebulon90
Oui je viens de m'en rendre compte, je modifiais ma question pendant que tu répondais, trop rapide sur ce coup
Merci quand même pour l'aide Alexp.

Par contre, le coeur de mon problème reste d'actualité.
zebulon90 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 22h03   #4
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
Je te suggère de regarder ce lien.
La réponse à ta question s'y trouve

http://www.developpez.net/forums/sho...d.php?t=408624
__________________
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2007, 16h11   #5
Candidat au titre de Membre du Club
 
Inscription : août 2004
Messages : 24
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : août 2004
Messages : 24
Points : 10
Points : 10
Envoyer un message via Yahoo à zebulon90
En effet j'ai trouvé de bonne choses sur ce sujet (shame on me, je ne l'avais pas trouvé dans ma recherche... )

Code :
1
2
3
4
5
6
7
8
9
10
11
12
if ( $3 ~ /sd*/ && Lbaie ~ TypeBaie )
{
Disk[$a] = $3
Path[$3] = Lpath
cmd=("scsiinfo -i /dev/"Disk[$a]" |grep Revision |cut -c 32-42")
cmd|getline
Lun=$0
close(cmd)
print Path[Disk[$a]]"  "Lun"      "Disk[$a]
a++
}
Par contre la ligne " cmd|getline " me pose problème... j'ai l'impression que ça me fait sauter également des lignes dans mon awk... (je perds des enregistrements $1, $2,... de mon awk principal alors que je les ai encore lors du passage de la commande).
Voyez-vous une erreur de synthaxe quelque part? Sinon je vais essayer de chercher encore un peu

Au fait, ma question sur les awk imbriqués est toujours d'actualité, si vous avez une idée, je suis preneur
zebulon90 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2007, 20h15   #6
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
Idem, entre temps, cette question a été posée et la réponse donnée

http://www.developpez.net/forums/sho...d.php?t=408624
__________________
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2007, 09h24   #7
Candidat au titre de Membre du Club
 
Inscription : août 2004
Messages : 24
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : août 2004
Messages : 24
Points : 10
Points : 10
Envoyer un message via Yahoo à zebulon90
La réponse n'y est pas, je sauvegardais déjà mes variables dans des autres variables. Mon erreur venais du fait que je les sauvais dans des tableaux et apparemment ça posait problème...

Mais bon, j'ai put passer outre et j'ai réussi à faire ce que je voulais

Et pour les awk imbriqués, est-ce possible?
Le problème est qu'il a du mal avec les " ' ". Dès qu'il en croise un il le prend pour lui. Peut-on faire autrement?
zebulon90 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2007, 11h19   #8
Candidat au titre de Membre du Club
 
Inscription : août 2004
Messages : 24
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : août 2004
Messages : 24
Points : 10
Points : 10
Envoyer un message via Yahoo à zebulon90
Edit : Désolé, l'edit du post précédent a foiré...
zebulon90 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2007, 22h34   #9
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
[QUOTE=zebulon90;2492304]
Une petite question en passant:
Pour le awk : Peut-on imbriquer des awk comme suit:
Code :
1
2
3
4
5
6
7
 
awk'{ 
blabla
blabla
val= (awk'{balbla}' fichier)
blabla
}'fichier
[QUOTE]


Pour ton awk encapsulé dans un 1er awk tu peux éviter le problème des simple-quotes en mettant les instructions awk dans un fichier comme ci-dessous ( option -f )

Code :
1
2
cmd=("awk -f FicAwkCmd fichier")
cmd|getline
__________________
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 10h52   #10
Candidat au titre de Membre du Club
 
Inscription : août 2004
Messages : 24
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : août 2004
Messages : 24
Points : 10
Points : 10
Envoyer un message via Yahoo à zebulon90
A vi j'y avais pas pensé!

Je m'en vais essayer ça de suite. Merci pour ton aide BlaireauOne
zebulon90 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 05h24.


 
 
 
 
Partenaires

Hébergement Web