Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/01/2011, 11h01   #1
Membre du Club
 
Inscription : octobre 2006
Messages : 105
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 105
Points : 48
Points : 48
Par défaut Problème avec chaine de caractère

J'essaie maintenant d'affecter sequentiellement une chaine de caractère à une variable mais il m'affiche bizarrement des erreurs "no such file or directory" alors que je lui demande juste de faire un echo sur la variable SOURCEFOLDER , voici mon code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
for x in $(seq  1 6); 
do 
SOURCEFOLDER=''"
#Répertoire contenant les log zippés
if [ $x -eq 1 ]
then 
$SOURCEFOLDER="/public/accesslogs-02-032010/"
elif [ $x -eq 2 ]
then 
$SOURCEFOLDER="/public/accesslogs-20101019/"
elif [ $x -eq 3 ]
then 
$SOURCEFOLDER="/public/accesslogs-m3/wap1-vscm/"
elif [ $x -eq 4 ]
then 
$SOURCEFOLDER="/public/accesslogs-m3/wap2-vscm/"
elif [ $x -eq 5 ]
then 
$SOURCEFOLDER="/public/accesslogs-m3/wap3-vscm/"
elif [ $x -eq 6 ]
then 
$SOURCEFOLDER="/public/accesslogs-m3/wap4-vscm/"
fi
echo $SOURCEFOLDER
 
done
Merci d'avance.
framus.class est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 11h12   #2
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 978
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 978
Points : 5 995
Points : 5 995
Salut.

À première vue, tu fais des affectations avec des $ :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if [ $x -eq 1 ]
then 
    SOURCEFOLDER="/public/accesslogs-02-032010/"
elif [ $x -eq 2 ]
then 
    SOURCEFOLDER="/public/accesslogs-20101019/"
elif [ $x -eq 3 ]
then 
    SOURCEFOLDER="/public/accesslogs-m3/wap1-vscm/"
elif [ $x -eq 4 ]
then 
    SOURCEFOLDER="/public/accesslogs-m3/wap2-vscm/"
elif [ $x -eq 5 ]
then 
    SOURCEFOLDER="/public/accesslogs-m3/wap3-vscm/"
elif [ $x -eq 6 ]
then 
    SOURCEFOLDER="/public/accesslogs-m3/wap4-vscm/"
fi
Je ne vois pas l'utilité de cette première affectation :
Cordialement,
Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 11h17   #3
Membre du Club
 
Inscription : octobre 2006
Messages : 105
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 105
Points : 48
Points : 48
Merci pour ton aide !!
framus.class est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 11h27   #4
Membre Expert
 
Avatar de jabbounet
 
frederic frances
Inscription : juin 2009
Messages : 1 703
Détails du profil
Informations personnelles :
Nom : frederic frances
Âge : 36

Informations forums :
Inscription : juin 2009
Messages : 1 703
Points : 2 115
Points : 2 115
Autrement plutot que des if /elseif

tu peux utiliser un tableau dans ce cas.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash
 
SOURCES=(
    ""
    "/public/accesslogs-02-032010/"
    "/public/accesslogs-20101019/"
    "/public/accesslogs-m3/wap1-vscm/"
    "/public/accesslogs-m3/wap2-vscm/"
    "/public/accesslogs-m3/wap3-vscm/"
    "/public/accesslogs-m3/wap4-vscm/"
)
 
for x in $(seq  1 6); 
do 
    SOURCEFOLDER=${SOURCES[x]}
    echo "Folder($x): "$SOURCEFOLDER 
done
 
#ou
for SOURCEFOLDER in ${SOURCES[@]} 
do
    echo "Folder: "$SOURCEFOLDER 
done
__________________
BAZAR est un joyeux bordel improvisé ! Tous les mardis.
http://www.improetcompagnie.com/publ...ctacles-6.html

Citation:
Envoyé par Isaac Asimov
Pour réussir, il ne suffit pas de prévoir. Il faut aussi savoir improviser
Pour les utilisateurs d'emacs:
http://www.emacswiki.org/

Attends de voir ce qui vas sortir de:
http://www.pushmid.com
jabbounet est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/01/2011, 11h40   #5
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 069
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 069
Points : 4 145
Points : 4 145
houla! quand tu as une telle ribambelle de if...
mieux vaut un case..esac :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
 
for ((x=1; x<=6; x++))
do case $x in
      1) SOURCEFOLDER="/public/accesslogs-02-032010/" ;;
      2) SOURCEFOLDER="/public/accesslogs-20101019/" ;;
      3) SOURCEFOLDER="/public/accesslogs-m3/wap1-vscm/" ;;
      4) SOURCEFOLDER="/public/accesslogs-m3/wap2-vscm/" ;;
      5) SOURCEFOLDER="/public/accesslogs-m3/wap3-vscm/" ;;
      6) SOURCEFOLDER="/public/accesslogs-m3/wap4-vscm/" ;;
   esac
   echo $SOURCEFOLDER
done
on pourrait simplifier encore en utilisant un tableau :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
SourceFolders=( "/public/accesslogs-02-032010/" 
                "/public/accesslogs-20101019/" 
                "/public/accesslogs-m3/wap1-vscm/"
                "/public/accesslogs-m3/wap2-vscm/" 
                "/public/accesslogs-m3/wap3-vscm/" 
                "/public/accesslogs-m3/wap4-vscm/"  
              )
for ((x=0; x<${#SourceFolders[@]}; x++))
do echo "${SourceFolders[x]}"
done
#voire :
for folder in "${SourceFolders[@]}"
do echo "$folder"
done
#ou tout simplement :
printf '%s\n' "${SourceFolders[@]}"
non, mais

edit: grillé
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/01/2011, 11h50   #6
Membre du Club
 
Inscription : octobre 2006
Messages : 105
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 105
Points : 48
Points : 48
Tout à fait d'accord ! Merci pour vos réponses
framus.class est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h36.


 
 
 
 
Partenaires

Hébergement Web