Re.
Remplaces for (( i=1 ; i<=$x2 ; i++ )) par for (( i=1 ; i<=x2 ; i++ )).
J'ai modifié un peu le code ... il s'exécute maintenant comme ceci :
./script.sh fichierEntrée fichierSortie
ou comme ceci :
1 2 3 4
| [ ~]./script.sh
Saisir fichier d'entrée : fichierEntrée
Saisir fichier de sortie : fichierSortie
[ ~] |
Si tu veut que le fichier de sortie soit le même que le fichier d'entrée tu met le même nom aux deux fichiers à l'exécution.
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| #!/bin/bash
if [ $# -lt 2 ]
then
printf "Saisir fichier d'entrée : "
read fichierEnt
printf "Saisir fichier de sortie : "
read fichierSort
else
fichierEnt=$1
fichierSort=$2
fi
fichierInt=fichier_int
ExPow ()
{
exp=$(echo "(1*2.718281828459)" | bc)
value=1
if [ $x -lt 0 ]
then
x2=$(echo $x | awk 'BEGIN{FS="-"} {print $2}')
else
x2=$x
fi
for (( i=1 ; i<=x2 ; i++ ))
do
value=$(echo "$value*$exp" | bc -l)
done
if [ $x -lt 0 ]
then
value=$(echo "1/$value" | bc -l)
fi
}
k=0
cat $fichierEnt | while true
do
read ligne
if [ "$ligne" = "" ]
then
# tri à bulle
for (( m=0 ; m<k ; m++ ))
do
let k2=$k-$m
for (( n=0 ; n<k2 ; n++ ))
do
comp=$(echo "${tab[n]} < ${tab[m]}" | bc)
if [ $comp -eq 1 ]
then
tampon1=${tab[m]}
tampon2=${tab2[m]}
tab[m]=${tab[n]}
tab2[m]=${tab2[n]}
tab[n]=$tampon
tab2[n]=$tampon2
fi
done
l=0
until [ $k -eq 0 ] || [ $l -eq 100 ]
do
let k=$k-1
echo ${tab2[k]} >> $fichierInt
let l=$l+1
done
done
exit
else
set -- $ligne
x=$(echo $3 | awk 'BEGIN{FS="e"} {print $2}')
value2=$(echo $3 | awk 'BEGIN{FS="e"} {print $1}')
x=$(echo "$x" | bc -l)
ExPow
tab[k]=$(echo "$value*$value2" | bc -l)
tab2[k]=$(echo $ligne)
let k=$k+1
fi
done
cat $fichierInt | grep insister > $fichierSort
cat $fichierInt | grep joindre >> $fichierSort
rm $fichierInt |
Essayes ce code pour voir.
Partager