Forcer l'interprétation de variables

Fermé
Zent - 29 janv. 2007 à 11:21
enfinbref94 Messages postés 12 Date d'inscription lundi 17 février 2014 Statut Membre Dernière intervention 27 mai 2014 - 27 mai 2014 à 14:58
Bonjour,

J'ai eu beau chercher, je ne vois pas comment résoudre cette énigme...
J'ai un fichier avec des chemins, j'aimerais faire un ls -l de ces chemins

Je fais donc :
while read line ;do ls -l "$line" >>final.txt; done < path.txt

Sauf que dans path.txt j'ai :
$PATH1/aaa/bbb
$PATH2/ccc/hhh

Et quand j'exécute la commande, j'ai une erreur :
ls: 0653-341 The file $PATH1/aaa/bbb does not exist.
ls: 0653-341 The file $PATH2/ccc/hhh does not exist.

Quelqu'un voit comment faire pour "forcer" l'interprétation des variables $PATH1 et $PATH2 lorsque je fais le ls -l $line ???

Merci beaucoup d'avance!!!!!
A voir également:

4 réponses

yoann_tux Messages postés 441 Date d'inscription lundi 28 février 2005 Statut Membre Dernière intervention 24 juillet 2008 95
29 janv. 2007 à 15:09
essaye en perl par exemples avec les guillemets ;)
0
Je sais pas trop je débute déjà sous Unix et je connais pas le shell. J'aimerais bien pouvoir me dépatouiller avec un script... :(

Merci quand même je me pencherai dessus si je trouve vraiment pas de réponse, mais là, j'ai vraiment pas le courage.
0
En fait, dans un premier temps, je voudrais avoir les nouveaux chemins (cad que les variables d'environnement ont pris leur valeur) dans un autre fichier

awk -F / ' /PATH1/ { print $PATH1"/"$2"/"$3 }' path.txt >> final.txt
awk -F / ' /PATH2/ { print $PATH2"/"$2"/"$3 }' path.txt >> final.txt

Je ferai ensuite les ls avec un dernier awk sur le fichier final.txt

Mais là aussi j'ai un souci, car awk ne veut pas me faire les print des variables d'environnement...

Je serais vraiment très reconnaissant si quelqu'un pouvait m'aider... :(
0
enfinbref94 Messages postés 12 Date d'inscription lundi 17 février 2014 Statut Membre Dernière intervention 27 mai 2014
27 mai 2014 à 14:58
Hello !

Essaie ça :

while read line ;do eval "echo $line" | ls -l >>final.txt; done < path.txt
0