मैं एक स्क्रिप्ट लिखने के लिए लंबे समय से संघर्ष कर रहा हूं जिसमें 2 तर्क होंगे, 1 एक वर्ष का चयन करने के लिए कहे और 2 यह चुनने के लिए कहे कि क्या मैं न्यूनतम, अधिकतम, औसत या सभी से संबंधित फाइलों से अंतिम पंक्ति के रूप में दिखाना चाहता हूं चयनित वर्ष के लिए।
मूल रूप से, मेरे पास एक निर्देशिका है जिसमें विभिन्न वर्षों (2000, 2001, 2002 आदि) की उपनिर्देशिकाएँ हैं। उन निर्देशिकाओं में महीनों और दिनों के लिए उपनिर्देशिकाएँ होती हैं, जिनमें (क) फ़ाइल (नों की वास्तविक जानकारी हालांकि) अलग-अलग होती है। अंतिम पंक्ति के रूप में शहर। यह निर्देशिका के पेड़ का एक हिस्सा है:
.
|-- 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
यह मुझे निर्देशिकाओं को चुनने देता है, लेकिन मुझे उन उत्तरों को नहीं देता है जिनकी मुझे ज़रूरत है, बस अपनी फ़ाइलों की अंतिम पंक्तियों को थूकता है।