Pages : 1
#1 Le 28/10/2009, à 12:11
- karch
[resolu] commande ls dans script bash
Bonjour
J'ai un petit souci en bash
Dans un terminal la commande ls -l affiche bien le contenu de mon répertoire listé par colonne
mais dans mon script, il ne veut rien savoir
Ex:
#!/bin/sh
liste1=`ls -l "/mnt/doc/"`
echo $liste1
Une idée ?
Merci
Dernière modification par karch (Le 09/12/2009, à 23:43)
Hors ligne
#2 Le 28/10/2009, à 12:22
- richardsantoro
Re : [resolu] commande ls dans script bash
Essaye comme ca :
liste1=`ls -l /mnt/doc'
for x in $liste1
do
echo -e $x \n
done
Logiciels incontournables => Terminator : terminal divisible; GNS3 : Simulation de réseau avec IOS Cisco; DIA : Editeur de diagrammes pour réseaux et autres; VirtualBox : Emulateur d'ordinateur
Hors ligne
#3 Le 28/10/2009, à 12:22
- Grünt
Re : [resolu] commande ls dans script bash
Tu as écrit:
#!/bin/sh
liste1=`ls -l "/mnt/doc/"`
echo $liste1
Comme ceci, ça marche:
#!/bin/sh
liste1=`ls -l "/mnt/doc/"`
echo "$liste1"
Il faut protéger ton nom de variable avec des guillemets afin que les retour à la ligne ne soient pas virés (ne me demande pas pourquoi ).
Et, pour info, tu peux affecter tes variables comme ceci:
liste1=$(ls -l /mnt/doc)
qui a exactement le même effet que ton
liste1=`ls -l /mnt/doc`
Edit:
La méthode de richardsantoro consiste à lire la variable ligne par ligne et à ajouter à chaque fois les retours charriot "\n", ça marche aussi
Dernière modification par ǤƦƯƝƬ (Le 28/10/2009, à 12:23)
Red flashing lights. I bet they mean something.
Hors ligne
#4 Le 28/10/2009, à 12:27
- herberts
Re : [resolu] commande ls dans script bash
Alors, la syntaxe est bonne, en tout cas ça marche chez moi en copiant / collant ton texte. Es tu certain de ton chemin ?
les " sont inutiles, et pourquoi ne pas mettre directement
ls -l /mnt/doc
dans ton script ? le passage par la variable fait sauter le formatage et du coup c'est un peu illisible.
Hors ligne
#5 Le 28/10/2009, à 12:29
- Grünt
Re : [resolu] commande ls dans script bash
@herberts:
Ce n'est pas le passage par la variable qui fait sauter les retour à la ligne, mais la sortie avec echo si la variable n'est pas protégée. Autrement dit, les retours à la ligne sont bien dans la variable (ce que la méthode de richardsantoro confirme).
Et s'il ne met pas directement la commande dans le script, c'est (je suppose) qu'il va travailler sur la variable ensuite (avec du sed, du grep, qu'en sais-je?).
Red flashing lights. I bet they mean something.
Hors ligne
#6 Le 28/10/2009, à 13:10
- karch
Re : [resolu] commande ls dans script bash
tout a fait Grunt
Merci en tout cas a tous pour vos réponses
Ciao ++
Hors ligne
Pages : 1