Bonjour,
Je cherche un moyen de récuperer dans une variable la sortie d'une commande systeme. Par exemple je voudrai affecter à une variable type chaine de caractère le résultat de :
Merci d'avanceCode:
1
2 CALL SYSTEM('ls')
Version imprimable
Bonjour,
Je cherche un moyen de récuperer dans une variable la sortie d'une commande systeme. Par exemple je voudrai affecter à une variable type chaine de caractère le résultat de :
Merci d'avanceCode:
1
2 CALL SYSTEM('ls')
Re-bonjour,
J'ai finalement réussi à contourner mon problème : je redirige la sortie de la commande système vers un fichier puis je lis le fichier dans le fortran :
Code:
1
2
3 CALL SYSTEM('ls > fichier.txt') OPEN(UNIT=10,FILE='fichier.txt,...)
Salut
Tu utilises ls donc tu es sous unix/linux.
J'ai eu le même cas à traiter et je l'ai résolu de manière tout à fait bourrine mais ça marche.
L'idée est de passer par un fichier et lire son contenu.
Mais il faut avoir le résultat de ls sur une ligne donc piper avec xargs.
Et ça donne :
Code:
1
2
3
4
5
6
7
8
9 character (len = 1000) :: chaine call system ('ls | xargs > /tmp/bidon') open (21,file='/tmp/bidon', status='old', action='read') read (21, '(a)') chaine close (21) call system ('rm /tmp/bidon') print *, trim(chaine) end
Bonjour,
oui je fais à peu près la même chose au "xargs" près.
J'ai un peu regardé le manuel de xargs sans comprendre à quoi sert cette commande.
Auriez-vous quelques lumières ?
Sinon le code suivant me convient parfaitement aussi
Code:
1
2 call system('ls > fichier')
Bonsoir
Lorsque que le nombre de fichiers est important, ls affiche le résultat sur plusieurs lignes.Citation:
J'ai un peu regardé le manuel de xargs sans comprendre à quoi sert cette commande.
Auriez-vous quelques lumières ?
Du coup, ça n'est pas simple de mettre ça dans une seule chaine.
xargs (en utilisation basique sans argument) force l'affichage sur une seule ligne.
Alors c'est facile de récupérer le résultat dans une chaine.
Bon WE
Merci pour ces précisions