Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 14

Автор НСйл ΠœΡΡ‚ΡŒΡŽ

Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π½Π½ΠΈΡ… ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°Ρ… UNIX Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ внСшнюю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½ΠΎ Π² Π±ΠΎΠ»Π΅Π΅ соврСмСнных вСрсиях ΠΈΡ… ΡΡ‚Π°Ρ€Π°ΡŽΡ‚ΡΡ Π΄Π΅Π»Π°Ρ‚ΡŒ встроСнными. ΠœΡ‹ вСрнСмся ΠΊ этому, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Π° test Π½Π΅ часто примСняСтся Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ сцСнариСв ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ОБ Linux, Π½ΠΈΠΊΠΎΠ³Π΄Π° Ρ€Π°Π½ΡŒΡˆΠ΅ Π½Π΅ писавшиС сцСнариСв, ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ простыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΈΡ… test. Если такая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, вСроятно, ΠΎΠ½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΠ΅Ρ‚ с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ test. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π² вашСй систСмС внСшняя ΠΊΠΎΠΌΠ°Π½Π΄Π° с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΏΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π²Ρ€ΠΎΠ΄Π΅ which test ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, какая ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° test выполняСтся Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΠΎΡ€ΠΌΡƒ ./test, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ выполняСтС сцСнарий ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°. Если ΡΠΎΠΌΠ½Π΅Π²Π°Π΅Ρ‚Π΅ΡΡŒ, ΠΏΡ€ΠΈΠΌΠΈΡ‚Π΅ Π·Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ свои сцСнарии, прСдваряя ΠΏΡ€ΠΈ запускС ΠΈΡ… ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ символов ./.

ΠœΡ‹ прСдставим ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ test Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ условия: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ наличия Ρ„Π°ΠΉΠ»Π°. Для Π½Π΅Π΅ понадобится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°: test -f <имя_Ρ„Π°ΠΉΠ»Π°>, поэтому Π² сцСнарии ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ

if test -f fred.c

then

 ...

fi

To ΠΆΠ΅ самоС ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

if [ -f fred.c ]

then

 ...

fi

Код Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ test (Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π»ΠΈ условиС) опрСдСляСт, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ условный ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ скобкой [ ΠΈ провСряСмым условиСм. Π­Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ, Ссли Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ символ [ β€” это всС Ρ€Π°Π²Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ test, Π° послС ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π».

Если Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ слово then Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ строкС, Ρ‡Ρ‚ΠΎ ΠΈ if, Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ с запятой для отдСлСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ test ΠΎΡ‚ then:

if [ -f fred.c ]; then

 ...

fi

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ условий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ test, дСлятся Π½Π° Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ°: строковыС сравнСния, числовыС сравнСния ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² (file conditionals). Π­Ρ‚ΠΈ Ρ‚ΠΈΠΏΡ‹ условий описаны Π² Ρ‚Π°Π±Π». 2.4.


Π’Π°Π±Π»ΠΈΡ†Π° 2.4

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ условий Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ БравнСния строк Π‘Ρ‚Ρ€ΠΎΠΊΠ°1 = Π‘Ρ‚Ρ€ΠΎΠΊΠ°2 True (истина), Ссли строки ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ Π‘Ρ‚Ρ€ΠΎΠΊΠ°1 != Π‘Ρ‚Ρ€ΠΎΠΊΠ°2 True (истина), Ссли строки Ρ€Π°Π·Π½Ρ‹Π΅ -n Π‘Ρ‚Ρ€ΠΎΠΊΠ° True (истина), Ссли Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π½Π΅ null -z Π‘Ρ‚Ρ€ΠΎΠΊΠ° True (истина), Ссли Π‘Ρ‚Ρ€ΠΎΠΊΠ° null (пустая строка) БравнСния чисСл Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 -eq Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2 True (истина), Ссли выраТСния Ρ€Π°Π²Π½Ρ‹ Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 -ne Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2 True (истина), Ссли выраТСния Π½Π΅ Ρ€Π°Π²Π½Ρ‹ Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 -gt Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2 True (истина), Ссли Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 большС, Ρ‡Π΅ΠΌ Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2 Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 -ge Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2 True (истина), Ссли Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 Π½Π΅ мСньшС Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2 Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 -lt Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2 True (истина), Ссли Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 мСньшС, Ρ‡Π΅ΠΌ Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2 Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 -lΠ΅ Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2 True (истина), Ссли Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 Π½Π΅ большС Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2 ! Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ True (истина), Ссли Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΎΠΆΠ½ΠΎ, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Ρ„Π»Π°Π³ -d Ρ„Π°ΠΉΠ» True (истина), Ссли Ρ„Π°ΠΉΠ» β€” ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ -Π΅ Ρ„Π°ΠΉΠ» True (истина), Ссли Ρ„Π°ΠΉΠ» сущСствуСт. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ, опция -e Π½Π΅ Π±Ρ‹Π»Π° пСрСносима Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, поэтому ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ примСняСтся -f -f Ρ„Π°ΠΉΠ» True (истина), Ссли Ρ„Π°ΠΉΠ» β€” ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» -g Ρ„Π°ΠΉΠ» True (истина), Ссли для Ρ„Π°ΠΉΠ»Π° установлСн Π±ΠΈΡ‚ set-group-id -r Ρ„Π°ΠΉΠ» True (истина), Ссли Ρ„Π°ΠΉΠ» доступСн для чтСния -s Ρ„Π°ΠΉΠ» True (истина), Ссли Ρ„Π°ΠΉΠ» Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° -u Ρ„Π°ΠΉΠ» True (истина), Ссли для Ρ„Π°ΠΉΠ»Π° установлСн Π±ΠΈΡ‚ set-user-id -v Ρ„Π°ΠΉΠ» True (истина), Ссли Ρ„Π°ΠΉΠ» доступСн для записи -Ρ… Ρ„Π°ΠΉΠ» True (истина), Ссли Ρ„Π°ΠΉΠ» β€” исполняСмый Ρ„Π°ΠΉΠ» ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Вас ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ нСпонятныС Π±ΠΈΡ‚Ρ‹ set-group-id ΠΈ set-user-id (Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ set-gid ΠΈ set-uid). Π‘ΠΈΡ‚ set-uid прСдоставляСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΡ€Π°Π²Π° Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°, Π° Π½Π΅ просто Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π±ΠΈΡ‚ set-gid прСдоставляСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΡ€Π°Π²Π° Π³Ρ€ΡƒΠΏΠΏΡ‹. Π­Ρ‚ΠΈ Π±ΠΈΡ‚Ρ‹ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ chmod с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΉ s ΠΈ g. На Ρ„Π°ΠΉΠ»Ρ‹, содСрТащиС сцСнарии, Ρ„Π»Π°Π³ΠΈ set-gid ΠΈ set-uid Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚, ΠΎΠ½ΠΈ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ влияниС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° исполняСмыС Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹.

ΠœΡ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ сами сСбя ΠΎΠ±ΠΎΠ³Π½Π°Π»ΠΈ, Π½ΠΎ Π΄Π°Π»Π΅Π΅ слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Ρ€ тСстирования состояния Ρ„Π°ΠΉΠ»Π° /bin/bash, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ смоТСтС ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ это выглядит Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

#!/bin/sh


if [ -f /bin/bash ]

then

 echo "file /bin/bash exists"

fi


if [ -d /bin/bash ]

then

 echo "/bin/bash is a directory"

else

 echo "/bin/bash is NOT a directory"

fi

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ тСст ΠΌΠΎΠ³ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ истинным, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ всСх Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² трСбуСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самыС ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ test, ΠΏΠΎΠ»Π½Ρ‹ΠΉ список ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ справочном руководствС. Если Π²Ρ‹ примСняСтС ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ bash, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ встроСна ΠΊΠΎΠΌΠ°Π½Π΄Π° test, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ help test для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… свСдСний. ПозТС Π² этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· этих ΠΎΠΏΡ†ΠΈΠΉ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ познакомились с условиями, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ структуры, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ эти условия.

Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ структуры

Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Π΅ΡΡ‚ΡŒ ряд ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… структур ΠΈΠ»ΠΈ конструкций, ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Π½Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ структуры Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… элСмСнт синтаксичСской записи ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ β€” это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° условиС удовлСтворяСтся ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΎ Π½Π΅ удовлСтворяСтся. 

if

Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if ΠΎΡ‡Π΅Π½ΡŒ прост: ΠΎΠ½ провСряСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π² зависимости ΠΎΡ‚ условия выполняСт Ρ‚Ρƒ ΠΈΠ»ΠΈ ΠΈΠ½ΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

if условиС

then

 ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

else

 ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

fi

НаиболСС часто ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if примСняСтся, ΠΊΠΎΠ³Π΄Π° задаСтся вопрос, ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ принимаСтся Π² зависимости ΠΎΡ‚ ΠΎΡ‚Π²Π΅Ρ‚Π°:

#!/bin/sh


echo "Is it morning? Please answer yes or no "

read timeofday

if [ $timeofday = "yes" ]; then

 echo "Good morning"

else

 echo "Good afternoon"

fi

exit 0

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π½Π° экран:

Is it morning? Please answer yes or no

yes

Good morning

$

Π’ этом сцСнарии для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ содСрТимого ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ timeofday примСняСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° [. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ оцСниваСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ if, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ строки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.