|
|
|
|
Bonjour,
voilà un petit morceau de script qui me pose problème:
> cat test
#!/bin/bash
DATA="releve_niveau*.txt"
for DIR in `find -type d`; do
for FILE in $DIR/$DATA ; do
for i in $FILE ; do
NIV=$(cut -d "," -f2 $i)
for j in $NIV ; do
if [ $j -eq 0 ] # c'est ici que se trouve l'erreur
then
ABS=$i
else
ABS=$(echo "(0 - $j) " | bc)
fi
echo "pour $j le nombre absolu est $ABS"
sleep 1
done
done
done
./test: line 11: [: -5.259: integer expression expected
Je viens de trouver une première étape: rempalcer -eq (pour nombre entier) par >
if [ "$j" < 0 ]
then
ABS=$(echo "(0 - $j) " | bc)
fi
par contre, il m'inverse même les valeurs positives qui se retrouvent donc négative.... je veux juste que les valeurs négatives passent positive |
Oups, petit probleme dans mon précedent post/script,
snow_frog@mars:~/Bureau/script$ ll
releve_niveau_jeudi.txt
releve_niveau_vendredi.txt
snow_frog@mars:~/Bureau/script$ cat releve_niveau_vendredi.txt
06, -4.58
07, -4.37
08, 2.54
09, 3.78
snow_frog@mars:~/Bureau/script$ cat test
#!/bin/bash
DATA="releve_niveau*.txt"
for DIR in `find -type d`; do # pour chaque répertoire présent dans rep courant
for FILE in $DIR/$DATA ; do # pour chaque fichier $DATA présent dans ces répertoires
for i in $FILE ; do # pour chaque ligne présent dans lignes présentent dans ces ficheri $FILE
NIV=$(cut -d "," -f2 $i) # on garde la deuxième colonne uniquement. délimiteur de champs "virgule"
for j in $NIV ; do # pour chaque ligne $j présent dans cette deuxième colonne isolé
if [ "$j" < 0 ] # on cherche à savoir si cette valeur est plus petite que 0 (donc négative)
then
ABS=$(echo "(0 - $j) " | bc) # si valeur < 0 alors on l'a rend positive
else
ABS=$j # sinon on la laisse positive
fi
echo "pour $j l'absolu est $ABS
done
done
done
done
mais voilà, quand je lance le script, il m'inverse bien le signe des valeurs négatives (boucle if then) mais pour les valeurs positives, il m'inverse aussi le signe(normalement boucle if else) pourquoi ne prend-il pas en compte mon else ? |
Salut,
[plop]$ cat fich
06, -4.58
07, -4.37
08, 2.54
09, 3.78
[plop]$ cat foo.sh
#! /bin/sh
#set -xv
NIV=$(cut -d " " -f2 < $1)
for j in $NIV ; do
echo "pour $j l'absolu est ${j/-/}"
done
[plop]$ ./foo.sh fich
pour -4.58 l'absolu est 4.58
pour -4.37 l'absolu est 4.37
pour 2.54 l'absolu est 2.54
pour 3.78 l'absolu est 3.78
[plop]$;-))
$ man woman Il n'y a pas de page de manuel pour woman. |
Merci,
|
Merci bien, ça fonctionne comme il faut,
|