Ho lottato a lungo per scrivere uno script che avrebbe 2 argomenti, 1 chiedendo di selezionare un anno e 2 chiedendo di selezionare se voglio che il minimo, il massimo, la media o tutti vengano visualizzati come l'ultima riga dei file correlati all'anno selezionato.
Fondamentalmente, ho una directory che contiene sottodirectory di diversi anni (2000, 2001, 2002 ecc.) In quelle directory sono sottodirectory per mesi e giorni che contengono (a) file che informano su popolazioni (non informazioni reali però) di differenti città come ultima riga. Questa è una parte dell'albero della directory:
.
|-- 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
Tutti i file sono formattati allo stesso modo:
2019-04-03
Wednesday
Newcastle-upon-Tyne
255362
Ho bisogno di scrivere uno script per chiedermi quale anno ho bisogno (selezionando quella directory) e poi chiedendo se voglio che la popolazione sia media, minima, massima o tutto quanto sopra (che è l'ultima riga dei file).
Questo è quello che ho finora:
#!/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
Questo mi permette di scegliere le directory, ma non mi dà le risposte di cui ho bisogno, sputa solo le ultime righe dei miei file.