Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β write_html_page > $filename
Β Β Β Β Β Β Β Β else
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β echo "$PROGNAME: Cannot write file '$filename'" >&2
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β exit 1
Β Β Β Β Β Β Β Β fi
else
Β Β Β Β Β Β Β Β write_html_page
fi
Π£ Π½Π°Ρ ΡΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, Π½ΠΎ ΠΎΠ½ Π΅ΡΠ΅ Π½Π΅ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½Π΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅.
33. Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ: ΡΠΈΠΊΠ» for
Π ΡΡΠΎΠΉ Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π³Π»Π°Π²Π΅, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΠΎΠΉ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΌΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ Π΅ΡΠ΅ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΊΠ»ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅. Π¦ΠΈΠΊΠ» for ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠΈΠΊΠ»ΠΎΠ² while ΠΈ until ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΡΡΠ΅Π΄ΡΡΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ. ΠΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, ΡΠΈΠΊΠ» for ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡΡ ΡΡΠ΅Π΄ΠΈ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Π΄Π»Ρ bash.
Π¦ΠΈΠΊΠ» for ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½, ΡΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ for. Π ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡΡ bash ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π΄Π²Π΅ ΡΠΎΡΠΌΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ for.
for: ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΎΡΠΌΠ°
ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ for ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄:
for ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ [in ΡΠ»ΠΎΠ²Π°]; do
Β Β Β Β Β Β Β Β ΠΊΠΎΠΌΠ°Π½Π΄Ρ
done
Π³Π΄Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ β ΡΡΠΎ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡΡΡ Π² Ρ ΠΎΠ΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π°, ΡΠ»ΠΎΠ²Π° β Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ β ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΠΎΠΌΠ°Π½Π΄Ρ for ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
[[email protected] ~]$ for i in A B C D; do echo $i; done
A
B
C
D
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° for ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΡΠ΅ΡΡΡΠ΅Ρ ΡΠ»ΠΎΠ²: A, B, C ΠΈ D. ΠΠ»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΡΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΅ΡΡΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π°. Π Π½Π°ΡΠ°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ i ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ. ΠΠ½ΡΡΡΠΈ ΡΠΈΠΊΠ»Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° echo, ΠΎΠ½Π° Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ i, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ. Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΡΠΈΠΊΠ»Π°ΠΌΠΈ while ΠΈ until, ΡΠΈΠΊΠ» for Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ done.
ΠΠΎ-Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ ΠΌΠΎΡΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ for ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° ΡΠ»ΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π² ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ :
[[email protected] ~]$ for i in {A..D}; do echo $i; done
A
B
C
D
ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ²:
[[email protected] ~]$ for i in distros*.txt; do echo $i; done
distros-by-date.txt
distros-dates.txt
distros-key-names.txt
distros-key-vernums.txt
distros-names.txt
distros.txt
distros-vernums.txt
distros-versions.txt
ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΊΠΎΠΌΠ°Π½Π΄:
#!/bin/bash
# longest-word : ΠΏΠΎΠΈΡΠΊ ΡΠ°ΠΌΠΎΠΉ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² ΡΠ°ΠΉΠ»Π΅
while [[ -n $1 ]]; do
Β Β Β Β Β Β Β Β if [[ -r $1 ]]; then
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β max_word=
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β max_len=0
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β for i in $(strings $1); do
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β len=$(echo $i | wc -c)
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β if (( len > max_len )); then
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β max_len=$len
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β max_word=$i
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β fi
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β done
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β echo "$1: '$max_word' ($max_len characters)"
Β Β Β Β Β Β Β Β fi
Β Β Β Β Β Β Β Β shift
done
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΠΎΠΈΡΠΊ ΡΠ°ΠΌΠΎΠΉ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² ΡΠ°ΠΉΠ»Π΅. ΠΠΎΠ³Π΄Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ strings (Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠ°Π² ΠΏΠ°ΠΊΠ΅ΡΠ° GNU binutils), ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Β«ΡΠ»ΠΎΠ²Β» ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. Π¦ΠΈΠΊΠ» for ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΎΠ½ΠΎ ΡΠ°ΠΌΡΠΌ Π΄Π»ΠΈΠ½Π½ΡΠΌ ΠΈΠ· Π²ΡΡΡΠ΅ΡΠ°Π²ΡΠΈΡ ΡΡ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ. ΠΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΡΠΈΠΊΠ»Π° ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ.
ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ»ΠΎΠ²Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ for ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΠΎΠ½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π°, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΉ longest-word:
#!/bin/bash
# longest-word2 : ΠΏΠΎΠΈΡΠΊ ΡΠ°ΠΌΠΎΠΉ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² ΡΠ°ΠΉΠ»Π΅
for i; do
Β Β Β Β Β Β Β Β if [[ -r $i ]]; then
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β max_word=
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β max_len=0
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β for j in $(strings $i); do
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β len=$(echo $j | wc -c)
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β if (( len > max_len )); then
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β max_len=$len
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β max_word=$j
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β fi
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β done
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β echo "$i: '$max_word' ($max_len characters)"
Β Β Β Β Β Β Β Β fi
done
ΠΠΎΡΠ΅ΠΌΡ i?
ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π²ΠΎ Π²ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΡΠΈΠΊΠ»Π° for Π²ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ i. ΠΠΎΡΠ΅ΠΌΡ? Π Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π·Π° ΡΡΠΈΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ Π½Π΅ ΡΡΠΎΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ, ΠΊΡΠΎΠΌΠ΅ ΡΡΡΠ΅ΠΌΠ»Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΡΠ°Π΄ΠΈΡΠΈΡΠΌ. Π ΠΊΠΎΠΌΠ°Π½Π΄Π΅ for ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, Π½ΠΎ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ i, Π° ΡΠ°ΠΊΠΆΠ΅ j ΠΈ k.
Π‘Π²ΠΎΠΈΠΌΠΈ ΠΊΠΎΡΠ½ΡΠΌΠΈ ΡΡΠ° ΡΡΠ°Π΄ΠΈΡΠΈΡ ΡΡ ΠΎΠ΄ΠΈΡ Π² ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Fortran. Π Fortran Π½Π΅ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ΡΡ Ρ Π±ΡΠΊΠ² I, J, K, L ΠΈ M, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ΡΡ Ρ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ Π±ΡΠΊΠ²Ρ, β Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ, ΠΈΠ»ΠΈ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ (ΡΠΏΠΎΡΠΎΠ±Π½Ρ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠΈΡΠ»Π° Ρ Π΄ΡΠΎΠ±Π½ΠΎΠΉ ΡΠ°ΡΡΡΡ). ΠΡΠ° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ Π²ΡΠ½ΡΠΆΠ΄Π°Π»Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ I, J ΠΈ K Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΊΠ»Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Π° Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠ²Π»ΡΡΡΡΡ) ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎ ΠΌΠ΅Π½ΡΡΠΈΡ ΡΡΠΈΠ»ΠΈΠΉ.
ΠΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ Π΄Π°ΠΆΠ΅ Π² ΡΡΠ΅Π΄Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Π½Π° Fortran Ρ ΠΎΠ΄ΠΈΠ»Π° ΠΎΡΡΡΠΎΡΠ°: Β«GOD is real, unless declared integerΒ» (ΠΠΎΠ³ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½, ΠΏΠΎΠΊΠ° ΡΠ²Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΡΠ΅Π»ΡΠΌ).
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΌΡ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΠΈΠΊΠ» while ΡΠΈΠΊΠ»ΠΎΠΌ for. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ ΡΠ»ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ for ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΠΎΠ½Π° ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΡΠΈΠΊΠ»Π΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ i ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ j. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° shift.
for: ΡΠΎΡΠΌΠ° Π² ΡΡΠΈΠ»Π΅ ΡΠ·ΡΠΊΠ° C
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ bash Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΡΠΎΡΠ°Ρ ΡΠΎΡΠΌΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ for, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΠ°Ρ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π² ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ C, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ.
for (( Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅1; Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅2; Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅3 )); do
Β Β Β Β Β Β Β Β ΠΊΠΎΠΌΠ°Π½Π΄Ρ
done
Π³Π΄Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅1, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅2 ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅3 β ΡΡΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π° ΠΊΠΎΠΌΠ°Π½ΒΠ΄Ρ β ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π°.
Π‘Π²ΠΎΠΈΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ° ΡΠΎΡΠΌΠ° ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ:
(( Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅1 ))
while (( Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅2 )); do
Β Β Β Β Β Β Β Β ΠΊΠΎΠΌΠ°Π½Π΄Ρ
Β Β Β Β Β Β Β Β (( Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅3 ))
done
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅1 ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠΈΠΊΠ», Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅2 ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π°, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅3 Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΈΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ:
#!/bin/bash
# simple_counter : Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ for Π² ΡΡΠΈΠ»Π΅ ΡΠ·ΡΠΊΠ° C
for (( i=0; i<5; i=i+1 )); do
Β Β Β Β Β Β Β Β echo $i
done
ΠΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄:
[[email protected] ~]$ simple_counter
0
1
2
3
4
ΠΠ΄Π΅ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅1 ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ i Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ 0, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅2 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ i ΠΎΡΡΠ°Π΅ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ 5, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅3 ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ i Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ.
Π€ΠΎΡΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ for Π² ΡΡΠΈΠ»Π΅ ΡΠ·ΡΠΊΠ° C Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅, Π΅ΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΠΌΠΈ. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π΄Π²ΡΡ Π³Π»Π°Π²Π°Ρ .
ΠΠ°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ²ΡΠΈΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ for, Π²Π½Π΅ΡΠ΅ΠΌ Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π½Π°Ρ ΡΡΠ΅Π½Π°ΡΠΈΠΉ sys_info_page. Π Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΡ report_home_space Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
report_home_space () {