[SHELL] Rediriger le résultat d'une commande vers une variable ?

Rediriger le résultat d'une commande vers une variable ? [SHELL] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 30-03-2010 à 00:52:51    

Bonjour,
 
j'ai ce script qui permet de rediriger le résultat d'une commande "ls -ial" vers une variable shell puis de l'afficher via la commande "echo" :
 

Code :
  1. x=$(ls -ial)
  2. echo $x


 
le problème c'est que la commande echo m'affiche le résultat sans respecter les sauts de ligne, ça m'affiche le résultat de la commande ls en un seul bloc comme si les sauts de ligne étaient supprimés, ça rend le résultat difficilement lisible,
 
j'ai essayé la commande "echo -e $x" mais ça ne change rien,
 
je cherche donc à savoir si il existe un moyen de faire afficher le contenu de $x en respectant les sauts de ligne ?
 
merci


Message édité par Elbarto le 30-03-2010 à 00:57:19
Reply

Marsh Posté le 30-03-2010 à 00:52:51   

Reply

Marsh Posté le 30-03-2010 à 08:13:08    

J'ai exactement la même sortie via ls -ial qu'avec echo $x à savoir un listing bien ordonné.


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 30-03-2010 à 10:11:40    

Code :
  1. for LIST in "$(ls -ial)"; do echo "${LIST}"; done


Mais c'est un poil bourrin.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 30-03-2010 à 13:47:43    

o'gure a écrit :

J'ai exactement la même sortie via ls -ial qu'avec echo $x à savoir un listing bien ordonné.

 

avec les sauts de lignes ?

 

moi j'ai pas de saut de lignes, tout est affiché à la suite, du coup le "ls -ial" est affiché sans les sauts de ligne ce qui rend la lecture difficile,

 

essaie de faire le "ls -ial" sur un repertoire où il y a beaucoup de fichiers, de le mettre dans une variable, tu verras alors qu'avec la commande echo ça va t'afficher le résultat sans le formatage d'où la lecture difficile,

 

le problème apparait avec Mandriva 2007.1 et la dernière version de Debian ( Lenny, ainsi que la version "sid" ),

 

le shell utilisé est le bash

Message cité 1 fois
Message édité par Elbarto le 30-03-2010 à 13:49:01
Reply

Marsh Posté le 30-03-2010 à 13:51:17    

Elbarto a écrit :

essaie de faire le "ls -ial" sur un repertoire où il y a beaucoup de fichiers, de le mettre dans une variable, tu verras alors qu'avec la commande echo ça va t'afficher le résultat sans le formatage d'où la lecture difficile,


> pwd && x=$(ls -ial)
/usr/bin


> echo $x
...
1595928 -rwxr-xr-x  1 root   root     117K 19 févr. 21:45 nepomuk-rcgen*
1595462 -rwxr-xr-x  1 root   root     3,3K 10 déc.  13:00 nepomukserver*
1595477 -rwxr-xr-x  1 root   root      20K 10 déc.  13:00 nepomukservicestub*
1594829 -rwxr-xr-x  1 root   root      271  1 mars  20:52 neqn*
1594578 -rwxr-xr-x  1 root   root      69K 14 sept.  2009 netkit-ftp*
1595184 -rwxr-xr-x  1 root   root      27K 26 janv. 04:55 net-snmp-config*
1596446 -rwxr-xr-x  1 root   root      56K 18 déc.  16:19 network-admin*
1594933 -rwxr-xr-x  1 root   root       65  2 mars  21:36 nevow-xmlgettext*
1595214 lrwxrwxrwx  1 root   root       16 19 févr. 18:37 newaliases -> ../sbin/sendmail*
1594366 -rwsr-xr-x  1 root   root      24K 24 juil.  2009 newgrp*
1594676 -rwxr-xr-x  1 root   root      22K  4 mars  00:22 ngettext*
1596131 -rwxr-xr-x  1 root   root      20K  6 mars  14:23 nice*
...


Elbarto a écrit :

le problème apparait avec Mandriva 2007.1 et la dernière version de Debian ( Lenny, ainsi que la version "sid" ),
le shell utilisé est le bash


Zsh, il plante souvent ça  doit venir de là :/


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 30-03-2010 à 14:01:32    

en tout cas avec bash la commande echo ne semble pas interpréter correctement les sauts de ligne contenus dans une variable, les sauts de ligne sont remplacés par des espaces vides,

 
Fork Bomb a écrit :

Code :
  1. for LIST in "$(ls -ial)"; do echo "${LIST}"; done


Mais c'est un poil bourrin.

 

ce script permet en effet de respecter les sauts de ligne, ça peut être une solution  :jap:


Message édité par Elbarto le 30-03-2010 à 14:02:02
Reply

Marsh Posté le 31-03-2010 à 21:59:53    

echo "$x" tout simplement ...


---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
Reply

Marsh Posté le 31-03-2010 à 22:27:18    

merci !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed