나는 2 개의 인수, 1 년을 선택하고 2, 최소, 최대, 평균 또는 모두가 관련 파일의 마지막 줄로 표시되도록 선택할 것인지 묻는 스크립트를 작성하는 데 오랫동안 어려움을 겪었습니다. 선택한 연도
기본적으로, 나는 다른 디렉토리 (2000, 2001, 2002 등)의 하위 디렉토리가있는 디렉토리를 가지고 있습니다. 그 디렉토리는 (a) 다른 인구 (실제 정보는 아니지만)에 대해 알려주는 파일을 포함하는 달과 일의 하위 디렉토리입니다 마지막 줄로 도시. 그것은 디렉토리 트리의 일부입니다.
.
|-- 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
모든 파일은 같은 방식으로 포맷됩니다 :
2019-04-03
Wednesday
Newcastle-upon-Tyne
255362
필요한 연도 (해당 디렉토리 선택)를 묻는 스크립트를 작성하고, 평균, 최소, 최대 또는 전체를 위의 모집단 (파일의 마지막 줄)에 표시 할 것인지 묻습니다.
이것이 내가 지금까지 가진 것입니다.
#!/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
이렇게하면 디렉토리를 선택할 수 있지만 필요한 대답을 제공하지 않고 파일의 마지막 줄을 뱉어냅니다.