10Β Β Β Β Β Β 2Β Β Β Β Β Β Β Β 22Β Β Β Β Β Β 0
11Β Β Β Β Β Β 5Β Β Β Β Β Β Β Β 23Β Β Β Β Β Β 0
Total files = 80
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ hours, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π΅ΠΉ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π°. ΠΠ½Π° Π²ΡΠ²Π΅Π»Π° ΡΠ°Π±Π»ΠΈΡΡ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΈΡΠ»ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΈΠ·ΠΌΠ΅Π½ΡΠ²ΡΠΈΡ ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Ρ ΡΡΡΠΎΠΊ (0β23). ΠΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΊΠΎΠ΄, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ ΡΡΠΎΠΉ ΡΠ°Π±ΒΠ»ΠΈΡΡ:
#!/bin/bash
# hours : ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
usage () {
Β Β Β Β Β Β Β Β echo "usage: $(basename $0) directory" >&2
}
# Π£Π±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠΌ
if [[ ! -d $1 ]]; then
Β Β Β Β Β Β Β Β usage
Β Β Β Β Β Β Β Β exit 1
fi
# ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ²
for i in {0..23}; do hours[i]=0; done
# Π‘ΠΎΠ±ΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅
for i in $(stat -c %y "$1"/* | cut -c 12-13); do
Β Β Β Β Β Β Β Β j=${i/#0}
Β Β Β Β Β Β Β Β ((++hours[j]))
Β Β Β Β Β Β Β Β ((++count))
done
# ΠΡΠ²Π΅ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅
echo -e "Hour\tFiles\tHour\tFiles"
echo -e "----\t-----\t----\t-----"
for i in {0..11}; do
Β Β Β Β Β Β Β Β j=$((i + 12))
Β Β Β Β Β Β Β Β printf "%02d\t%d\t%02d\t%d\n" $i ${hours[i]} $j ${hours[j]}
done
printf "\nTotal files = %d\n" $count
Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ (usage) ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠ΅Π»Π° Ρ ΡΠ΅ΡΡΡΡΠΌΡ ΡΠ°Π·Π΄Π΅Π»Π°ΠΌΠΈ. Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. ΠΡΠ»ΠΈ Π½Π΅Ρ, ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ.
ΠΡΠΎΡΠΎΠΉ ΡΠ°Π·Π΄Π΅Π» ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ² hours. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0. ΠΠ°ΡΡΠΈΠ²Ρ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π½ΠΎ Π½Π°ΡΠ΅ΠΌΡ ΡΡΠ΅Π½Π°ΡΠΈΡ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅ ΠΎΡΡΠ°Π²Π°Π»ΠΎΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΏΡΡΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π² ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ ({0..23}), ΠΌΡ ΡΠΌΠΎΠ³Π»ΠΈ Π±Π΅Π· ΡΡΡΠ΄Π° ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ»ΠΎΠ² Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ for.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π·Π΄Π΅Π» ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΡΠ±ΠΎΡ Π΄Π°Π½Π½ΡΡ , Π²ΡΠ·ΡΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ stat Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ cut ΠΈΠ· ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΡΡΡ Π΄Π²ΡΠ·Π½Π°ΡΠ½ΡΠΉ ΡΠ°Ρ. ΠΠ½ΡΡΡΠΈ ΡΠΈΠΊΠ»Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π²Π΅Π΄ΡΡΠΈΡ Π½ΡΠ»Π΅ΠΉ ΠΈΠ· ΠΏΠΎΠ»Ρ Ρ ΡΠ°ΡΠΎΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΠ½Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ (ΠΈ, Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΠ΅ΡΠ΅, ΠΏΠΎΡΠ΅ΡΠΏΠΈΡ Π½Π΅ΡΠ΄Π°ΡΡ) ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ 00 ΠΏΠΎ 09 ΠΊΠ°ΠΊ Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° (ΡΠΌ. ΡΠ°Π±Π». 34.1). ΠΠ°Π»Π΅Π΅ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΌΡ ΡΠ°ΡΡ Π΄Π½Ρ. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π±ΡΠ΄Π΅Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ ΡΡΠ΅ΡΡΠΈΠΊ (count), Ρ ΡΠ°Π½ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅.
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°Π·Π΄Π΅Π» Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°. Π‘Π½Π°ΡΠ°Π»Π° Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ°ΡΠ° ΡΡΡΠΎΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, Π° Π·Π°ΡΠ΅ΠΌ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΈΠΊΠ», ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ Π² ΡΠ΅ΡΡΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΎΠ±ΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ
ΠΠ°ΡΡΠΈΠ²Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΏΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ², ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΈ Π΄Ρ., ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΡΠ΅Π½Π°ΡΠΈΡΡ .
ΠΡΠ²ΠΎΠ΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π²ΡΠ΅Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°
ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ * ΠΈ @. Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΠΈΠ½Π΄Π΅ΠΊΡ @ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ΅Π½Π½ΠΎΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
[[email protected] ~]$ animals=("a dog" "a cat" "a fish")
[[email protected] ~]$ for i in ${animals[*]}; do echo $i; done
a
dog
a
cat
a
fish
[[email protected] ~]$ for i in ${animals[@]}; do echo $i; done
a
dog
a
cat
a
fish
[[email protected] ~]$ for i in "${animals[*]}"; do echo $i; done
a dog a cat a fish
[[email protected] ~]$ for i in "${animals[@]}"; do echo $i; done
a dog
a cat
a fish
ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΌΠ°ΡΡΠΈΠ² animals ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΈ Π² Π½Π΅ΠΌ ΡΡΠΈ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎ Π΄Π²Π° ΡΠ»ΠΎΠ²Π° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ. ΠΠ°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΡΠ΅ΡΡΡΠ΅ ΡΠΈΠΊΠ»Π°, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π° ΡΠ»ΠΎΠ²Π°. ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ ${animals[*]} ΠΈ ${animals[@]} Π΄Π΅ΠΉΡΡΠ²ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ Π·Π°ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ. ΠΠ½Π΄Π΅ΠΊΡ * Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠ°Π·Π±ΠΈΡΠΎΠ΅ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ»ΠΎΠ²Π°, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΈΠ½Π΄Π΅ΠΊΡ @ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠΈ Β«ΡΠ»ΠΎΠ²Π°Β», ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Β«ΠΈΡΡΠΈΠ½Π½ΠΎΠΌΡΒ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅
ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΡΠ»ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ Π΄Π»ΠΈΠ½Ρ ΡΡΡΠΎΠΊΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
[[email protected] ~]$ a[100]=foo
[[email protected] ~]$ echo ${#a[@]} # ΡΠΈΡΠ»ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅
1
[[email protected] ~]$ echo ${#a[100]} # Π΄Π»ΠΈΠ½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 100
3
ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΌΠ°ΡΡΠΈΠ² a ΠΈ Π·Π°ΠΏΠΈΡΠ°Π»ΠΈ ΡΡΡΠΎΠΊΡ foo Π² ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 100. ΠΠ°Π»Π΅Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π΄Π»ΠΈΠ½Ρ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΎΡΠΌΡ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ° @. ΠΠ°ΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π΄Π»ΠΈΠ½Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 100, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΡΡΡΠΎΠΊΡ foo. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ ΡΡΡΠΎΠΊΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 100, bash ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ, ΡΡΠΎ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±ΡΡΠ½ΠΎ Π΄Π»Ρ ΡΠ΅Ρ ΡΠ·ΡΠΊΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° (ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ 0β99) Π±ΡΠ»ΠΈ Π±Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΡΡΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΡΡΠΈΡΡΠ²Π°Π»ΠΈΡΡ Π±Ρ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΠΎΠΈΡΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²
Π’Π°ΠΊ ΠΊΠ°ΠΊ bash ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°Π·ΡΠ΅ΠΆΠ΅Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΏΡΡΠ΅ΠΌ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ, ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
${!ΠΌΠ°ΡΡΠΈΠ²[*]}
${!ΠΌΠ°ΡΡΠΈΠ²[@]}
Π³Π΄Π΅ ΠΌΠ°ΡΡΠΈΠ² β ΡΡΠΎ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ-ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠ°ΠΊ ΠΈ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ * ΠΈ @ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΡΠΎΡΠΌΠ° @, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½Π°Ρ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ, ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π½Π΅ΡΠ°Π·Π΄ΡΠΎΠ±Π»Π΅Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²:
[[email protected] ~]$ foo=([2]=a [4]=b [6]=c)
[[email protected] ~]$ for i in "${foo[@]}"; do echo $i; done
a
b
c
[[email protected] ~]$ for i in "${!foo[@]}"; do echo $i; done
2
4
6
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΊΠΎΠ½Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π°
ΠΠ½Π°Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠ½Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ * ΠΈ @, Π½Π΅ ΡΠΎΠΎΠ±ΡΠ°ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ Π·Π°Π½ΡΡΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅. Π ΡΡΠ°ΡΡΡΡ, ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ += Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠ½Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠΈΠΆΠ΅ ΠΌΡ Π·Π°ΠΏΠΈΡΠ°Π»ΠΈ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΌΠ°ΡΡΠΈΠ², Π° Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½Π΅Ρ Π΅ΡΠ΅ ΡΡΠΈ.
[[email protected] ~]$ foo=(a b c)
[[email protected] ~]$ echo ${foo[@]}
a b c
[[email protected] ~]$ foo+=(d e f)
[[email protected] ~]$ echo ${foo[@]}
a b c d e f
Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠ°ΡΡΠΈΠ²Π°
Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΌΠΈ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ, ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ ΡΠ°ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΡΠΌΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, Π½ΠΎ Π΅Π΅ Π½Π΅ΡΡΡΠ΄Π½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΌΠΎΠΌΡ:
#!/bin/bash
# array-sort : ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠ°ΡΡΠΈΠ²Π°
a=(f e d c b a)
echo "Original array: ${a[@]}"
a_sorted=($(for i in "${a[@]}"; do echo $i; done | sort))
echo "Sorted array:Β Β Β ${a_sorted[@]}"
ΠΡΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΎΠ½ Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
[[email protected] ~]$ array-sort
Original array: f e d c b a
Sorted array: a b c d e f
Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° (a) Π²ΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² (a_sorted), Π²ΡΠΏΠΎΠ»Π½ΡΡ ΡΡΡΠΊ Ρ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΡΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΠΌΡΡ ΡΠ°Π·Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ, ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΡΠΎΡΡΠ°Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°.
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°
Π£Π΄Π°Π»ΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ unset:
[[email protected] ~]$ foo=(a b c d e f)