Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 neutral).

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 wink

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