Boucle FOR script shell

Résolu/Fermé
snow_frog Messages postés 216 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 juin 2020 - 31 mars 2009 à 11:59
snow_frog Messages postés 216 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 juin 2020 - 31 mars 2009 à 16:33
Bonjour,

voilà le départ d'un sript, qui utilise des boucle FOR afin de trouver des fichiers précis dns chaque sous repertoires et par la suite effectuer une opération avec le cotenu de chaque fichiers.


#!/bin/bash

exec 2>/dev/null

DATA="*releve_niveau.txt"

for DIR in `find -type d`; do
for FILE in $DIR/$DATA ; do
for i in $FILE ; do
echo "$DIR ==> $i"

done
done
done<
/code>

avec une syntaxe comme celle là, je récupère:

<code>
. ==> ./*releve_niveau.txt

./test ==> ./test/sau49400_station_1_releve_niveau.txt

./test ==> ./test/sau49400_station_2_releve_niveau.txt



Ce que je souhaite faire, c'est différencier la variable i en fonction du nom du fichier traité:

par exemple, si le fichier est contient "station_1" il faut l'affecter à la variable i, si il contient "station_2" il faut l'affecter à la variable j:

en gros:
<code>
#!/bin/bash

exec 2>/dev/null

DATA="*releve_niveau.txt"
STAT1="*station_1"
STAT2="*station_2"

for DIR in `find -type d`; do
for FILE in $DIR/$DATA ; do
for i in $FILE ; do

if $i contient $STAT1 then mes_commandes_1
fi
if $i contient $STAT2 then mes_commandes_2
fi

done
done
done<
/code>

ceci me permettrait de remplir un tableau html avec dans une colonne les resultats de la station 1 et dans la colonne d'a cote les resultat de la station 2.
merci de votre aide
A voir également:

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
31 mars 2009 à 12:22
Salut,
case $i in
$STAT1) mes_commandes_1
;;
$STAT2) mes_commandes_1
;;
esac

1
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
31 mars 2009 à 14:38
jp@MDK:~/tmpfs ssh$ var="./test/sau49400_station_1_releve_niveau.txt"

jp@MDK:~/tmpfs ssh$ echo ${var}
./test/sau49400_station_1_releve_niveau.txt

jp@MDK:~/tmpfs ssh$ echo ${var##*/}
sau49400_station_1_releve_niveau.txt

jp@MDK:~/tmpfs ssh$
man bash (section "Paramètres"), si pages de man en français :
man bash -P 'less -p "^   Remplacement des paramètres"'
;-))
1
snow_frog Messages postés 216 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 juin 2020 139
31 mars 2009 à 16:33
merci.
résolu.
1
snow_frog Messages postés 216 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 juin 2020 139
31 mars 2009 à 14:25
merci pour ton aide,

voilà mon script maintenant:

#!/bin/bash

exec 2>/dev/null

DATA="*releve_niveau.txt"
STAT1="*station_1*"
STAT2="*station_2*"

for DIR in `find -type d`; do
for FILE in $DIR/$DATA ; do
for i in $FILE ; do

case $i in
$STAT1) echo "pour $i la station concernée est centre ville"
;;
$STAT_2) echo "pour $i la station concernée est pont de chemin de fer"
;;
esac


le "probleme" que j'ai est que $i s'affiche avec l'arborescence:

./test/sau49400_station_1_releve_niveau.txt

comment peut on "supprimer" le nom des sous repertoire pour n'afficher que le nom du fichier?

pour obtenir: sau49400_station_1_releve_niveau.txt au lieu de ./test/sau49400_station_1_releve_niveau.txt
0