Boucle FOR script shell

Résolu
snow_frog Messages postés 216 Date d'inscription   Statut Membre Dernière intervention   -  
snow_frog Messages postés 216 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Modérateur Dernière intervention   4 896
 
Salut,
case $i in
$STAT1) mes_commandes_1
;;
$STAT2) mes_commandes_1
;;
esac

1
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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   Statut Membre Dernière intervention   139
 
merci.
résolu.
1
snow_frog Messages postés 216 Date d'inscription   Statut Membre Dernière intervention   139
 
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