Boucle FOR script shell [Résolu/Fermé]

Signaler
Messages postés
216
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
26 juin 2020
-
Messages postés
216
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
26 juin 2020
-
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

4 réponses

Messages postés
40806
Date d'inscription
jeudi 28 août 2003
Statut
Non membre
Dernière intervention
10 août 2020
4 757
Salut,
case $i in
$STAT1) mes_commandes_1
;;
$STAT2) mes_commandes_1
;;
esac

1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57451 internautes nous ont dit merci ce mois-ci

Messages postés
40806
Date d'inscription
jeudi 28 août 2003
Statut
Non membre
Dernière intervention
10 août 2020
4 757
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57451 internautes nous ont dit merci ce mois-ci

Messages postés
216
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
26 juin 2020
131
merci.
résolu.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57451 internautes nous ont dit merci ce mois-ci

Messages postés
216
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
26 juin 2020
131
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