J'ai du mal depuis longtemps à écrire un script qui aurait 2 arguments, 1 demandant de sélectionner une année et 2 demandant de sélectionner si je veux que le minimum, le maximum, la moyenne ou tout soit affiché comme dernière ligne des fichiers associés à l'année sélectionnée.
Fondamentalement, j'ai un répertoire qui contient des sous-répertoires d'années différentes (2000, 2001, 2002, etc.) dans ces répertoires sont des sous-répertoires pour les mois et les jours qui contiennent un (des) fichier (s) informant sur les populations (mais pas de vraies informations) de différents villes comme dernière ligne. Cela fait partie de l'arborescence du répertoire:
.
|-- 2000
| |-- 01
| | `-- 18
| | `-- ff_1177818640
| |-- 02
| | |-- 02
| | | `-- ff_1669027271
| | |-- 03
| | | `-- ff_234075290
| | |-- 10
| | | `-- ff_1584524530
| | |-- 14
| | | `-- ff_113807345
| | `-- 17
| | `-- ff_1452228827
| |-- 03
| | |-- 06
| | | `-- ff_58914249
| | `-- 11
| | `-- ff_2828212321
| |-- 04
| | `-- 17
| | `-- ff_302131884
| |-- 06
| | `-- 13
| | `-- ff_2175615745
| |-- 07
| | |-- 07
| | | `-- ff_918426998
| | `-- 24
| | `-- ff_2808316425
| |-- 08
| | `-- 27
| | `-- ff_1449825497
| |-- 09
| | `-- 19
| | `-- ff_110255856
| `-- 12
| `-- 08
| `-- ff_1621190
|-- 2001
| |-- 03
| | `-- 21
| | `-- ff_517010375
| |-- 05
| | `-- 27
| | `-- ff_1458621098
| |-- 06
| | |-- 07
| | | `-- ff_155853916
| | |-- 25
| | | |-- ff_2382312387
| | | `-- ff_270731174
| | `-- 29
| | `-- ff_3228522859
| |-- 07
| | `-- 28
| | `-- ff_3215021752
| |-- 09
| | `-- 24
| | `-- ff_1080314364
| `-- 11
| `-- 24
| `-- ff_2313722442
Tous les fichiers sont formatés de la même manière:
2019-04-03
Wednesday
Newcastle-upon-Tyne
255362
J'ai besoin d'écrire un script pour me demander de quelle année j'ai besoin (en sélectionnant ce répertoire) puis en demandant si je veux que la moyenne, le minimum, le maximum ou tout ce qui précède soit affiché pour la population (qui est la dernière ligne des fichiers).
Voici ce que j'ai jusqu'à présent:
#!/bin/bash
function min () {
echo $(sort -n populations | head -1)
}
function max () {
echo $(sort -n populations | tail -1)
}
function avg () {
count=0
sum=0
while read line ; do
num='echo ${line#* }'
sum='expr $sum + $num'
count='expr $count + 1'
done < populations
avg='expr $sum / $count'
echo $avg
}
echo "Please enter the year: "
read s1
echo "
Enter an option:
1. Minimum
2. Maximum
3. Average
4. All"
read s2
#echo $s2
for file in $(find ~/filesToSort/$s1 -type f) ; do
tail -1 $file >> populations
done
echo $(cat populations)
#min
#max
#avg
rm populations
Cela me permet de choisir des répertoires, mais ne me donne pas les réponses dont j'ai besoin, crache simplement les dernières lignes de mes fichiers.