Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС

ΠžΡΠ½ΠΎΠ²Ρ‹ Bash-скриптинга для нСпрограммистов. Π§Π°ΡΡ‚ΡŒ 2

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π’ этой части Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎ Ρ„Π°ΠΉΠ»Π°Ρ… скриптов, ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΈ ΠΏΡ€Π°Π²Π°Ρ… доступа. Π’Π°ΠΊΠΆΠ΅ я расскаТу ΠΏΡ€ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ условного выполнСния, Π²Ρ‹Π±ΠΎΡ€Π° ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹.

Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹

Для выполнСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΠ΄Π½ΠΈΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ скрипты. Π‘ΠΊΡ€ΠΈΠΏΡ‚ – это тСкстовый Ρ„Π°ΠΉΠ», содСрТащий ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для shell. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ shell, Ρ‚Π°ΠΊ ΠΈ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π²Π½Π΅ΡˆΠ½ΠΈΡ… исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ².

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ Π² домашнюю Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ cd

ΠΈ создадим Π² Π½Π΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° nano ( nano script.sh )Ρ„Π°ΠΉΠ», содСрТащий 2 строки:

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° nano послС Π½Π°Π±ΠΎΡ€Π° тСкста скрипта, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Ctrl+X, Π΄Π°Π»Π΅Π΅ Π½Π° вопрос «Save modified buffer?» Π½Π°ΠΆΠ°Ρ‚ΡŒ Y, Π΄Π°Π»Π΅Π΅ Π½Π° запрос «File Name to Write:» Π½Π°ΠΆΠ°Ρ‚ΡŒ Enter. ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΏΡ€Π°Π²Π° доступа ΠΊ Ρ„Π°ΠΉΠ»Ρƒ:

Из Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ls Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΡ€Π°Π²Π° Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅:

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

ΠŸΡ€Π°Π²Π° доступа Π·Π°Π΄Π°ΡŽΡ‚ΡΡ трСмя Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ: для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ„Π°ΠΉΠ»; для Π³Ρ€ΡƒΠΏΠΏΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ; ΠΈ для всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…. Π—Π΄Π΅ΡΡŒ r, w ΠΈ x ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ соотвСтствСнно доступ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, запись ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

/.profile), Π»ΠΈΠ±ΠΎ для всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² общСсистСмный ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ (Ρ„Π°ΠΉΠ» /etc/profile).

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈ Π³Ρ€ΡƒΠΏΠΏΠ΅:

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ доступ Π½Π° запись (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ содСрТимого) Ρ„Π°ΠΉΠ»Π° всСм:

Π’Π°ΠΊΠΆΠ΅ для указания ΠΏΡ€Π°Π² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ маску. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, запись, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΠ΅, ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ – для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…, Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ:

Указывая 3 Ρ†ΠΈΡ„Ρ€Ρ‹, ΠΌΡ‹ Π·Π°Π΄Π°Π΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ маски для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Π³Ρ€ΡƒΠΏΠΏ. ΠŸΠ΅Ρ€Π΅Π²Π΅Π΄Ρ Ρ†ΠΈΡ„Ρ€Ρƒ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΡƒΡŽ систСму, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€Π°Π²Π°ΠΌ ΠΎΠ½Π° соотвСтствуСт. Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ для нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π‘ΠΈΠΌΠ²ΠΎΠ» – ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ ΠΏΡ€Π°Π² доступа ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π° ( – ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», d – дирСктория, l – ссылка, c – символьноС устройство, b – Π±Π»ΠΎΡ‡Π½ΠΎΠ΅ устройство, ΠΈ Ρ‚. Π΄.). БоотвСтствиС числа, Π΅Π³ΠΎ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ прСдставлСния ΠΈ ΠΏΡ€Π°Π² доступ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

НаписаниС скриптов Π½Π° Bash

Если Π²Ρ‹ ΡƒΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Ρ‚ΠΎ, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, часто выполняСтС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π». Часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π·Π°Π΄Π°Ρ‡ΠΈ, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ нСсколько ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для обновлСния систСмы Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ сначала Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π², Π° ΡƒΠΆΠ΅ Π·Π°Ρ‚Π΅ΠΌ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈ Ρ‚Π°ΠΊΠΈΡ… дСйствий ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ, Π΄Π°ΠΆΠ΅ Π²Π·ΡΡ‚ΡŒ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ скопированных Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ нСсколько Ρ€Π°Π· ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ скрипты. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим написаниС скриптов Π½Π° Bash, рассмотрим основныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, Ρ‚Π°ΠΊ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, bash скрипты с нуля.

ΠžΡΠ½ΠΎΠ²Ρ‹ скриптов

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ скрипта для ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Bash:

#!/bin/bash
echo «Hello world»

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. bash1. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-bash1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bash1. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° echo Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ строку, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΡƒΡŽ Π΅ΠΉ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ Π½Π° экран. ΠŸΠ΅Ρ€Π²Π°Ρ строка особая, ΠΎΠ½Π° Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт Π½Π° любом Π΄Ρ€ΡƒΠ³ΠΎΠΌ языкС программирования ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° python:

#!/usr/bin/env python
print(«Hello world»)

#!/usr/bin/env php
echo «Hello world»;

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

Π­Ρ‚ΠΎΡ‚ Ρ„Π»Π°Π³ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ мСняСт Π² самом Ρ„Π°ΠΉΠ»Π΅, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ систСмС, Ρ‡Ρ‚ΠΎ это Π½Π΅ просто тСкстовый Ρ„Π°ΠΉΠ», Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈ Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ», ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ. Если ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ всС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ bash, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ это явно.

chmod ugo+x Ρ„Π°ΠΉΠ»_скрипта

Π’Π΅ΠΏΠ΅Ρ€ΡŒ выполняСм Π½Π°ΡˆΡƒ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. bash. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-bash. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bash. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

ВсС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π’Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ малСнький скрипт, скаТСм для обновлСния. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, скрипты содСрТат Ρ‚Π΅ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅, ΠΈΡ… ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ просто. Но Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ услоТним Π·Π°Π΄Π°Ρ‡Ρƒ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ скрипт, это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ самому ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹. ВсС это позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Bash. ΠŸΡ€Π°Π²Π΄Π°, Ρ‚ΡƒΡ‚ всС Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС. НачнСм с простого.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² скриптах

НаписаниС скриптов Π½Π° Bash Ρ€Π΅Π΄ΠΊΠΎ обходится Π±Π΅Π· сохранСния Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ создания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π‘Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ обходится Π½ΠΈ ΠΎΠ΄ΠΈΠ½ язык программирования ΠΈ наш ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ язык ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎΠΆΠ΅.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΡƒΠΆΠ΅ Ρ€Π°Π½ΡŒΡˆΠ΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΈΡΡŒ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ окруТСния. Π’Π°ΠΊ Π²ΠΎΡ‚, это Ρ‚Π΅ ΠΆΠ΅ самыС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ½ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ.

НапримСр, объявим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ string:

ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ наш скрипт:

Bash Π½Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°Π΅Ρ‚ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ языки высокого уровня, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π‘++, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊ число, Ρ‚Π°ΠΊ ΠΈ строку. Одинаково всС это Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ строкой. ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ слияниС строк, для этого просто Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… подряд:

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. bash2. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-bash2. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bash2. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊ я ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ Ссли Π² строкС Π½Π΅Ρ‚ спСцсимволов. ΠŸΡ€ΠΈΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΎΠ±ΠΎΠΈΠΌ способам слияния строк, здСсь Ρ‚ΠΎΠΆΠ΅ дСмонстрируСтся Ρ€ΠΎΠ»ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. Если ΠΆΠ΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π±ΠΎΠ»Π΅Π΅ слоТныС способы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ строк ΠΈΠ»ΠΈ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, это Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² возмоТности ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π΅ Π±Ρ‹Π»ΠΈ Π±Ρ‹ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, Ссли Π±Ρ‹ Π² Π½ΠΈΡ… Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΡƒΡ‚ΠΈΠ»ΠΈΡ‚. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΎΠΉ синтаксис:

$( ΠΊΠΎΠΌΠ°Π½Π΄Π° )

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой конструкции Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ прямо Ρ‚ΡƒΠ΄Π°, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΎΠ½Π° Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π°, Π° Π½Π΅ Π½Π° экран. НапримСр, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° date Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄Π°Ρ‚Ρƒ. Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ эквивалСнтны:

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. bash3. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-bash3. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bash3. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

ΠŸΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅? НапишСм скрипт, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ hello world ΠΈ Π΄Π°Ρ‚Π°:

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. bash4. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-bash4. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bash4. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ достаточно ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ bash скрипт, Π½ΠΎ это Π΅Ρ‰Π΅ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС. Π”Π°Π»ΡŒΡˆΠ΅ ΠΌΡ‹ рассмотрим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ конструкции. Напомню, Ρ‡Ρ‚ΠΎ это всС ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ bash, ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΡ… Π² Ρ„Π°ΠΉΠ»Π΅, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ сразу ΠΆΠ΅ Π½Π° Ρ…ΠΎΠ΄Ρƒ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ скрипта

НС всСгда ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ bash скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ зависит ΠΎΡ‚ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π½ΡƒΠΆΠ½ΠΎ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΊΠ°ΠΊΠΎΠ΅ дСйствиС ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ скрипта ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΅ΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. ВсС эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ доступны Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π² Π²ΠΈΠ΄Π΅ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ².

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ с ΠΈΠΌΠ΅Π½Π΅ΠΌ 1 содСрТит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, пСрСмСнная 2, Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π­Ρ‚ΠΎΡ‚ bash скрипт Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°:

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. bash6. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-bash6. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bash6. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. bash5. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-bash5. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bash5. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ конструкции Π² скриптах

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ bash скрипта Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Π±Π΅Π· возмоТности Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹, ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° Π½ΠΈΡ… Π½ΡƒΠΆΠ½Ρ‹Π΅ дСйствия. Π­Ρ‚ΠΎ довольно-Ρ‚Π°ΠΊΠΈ слоТная Ρ‚Π΅ΠΌΠ°, Π½ΠΎ ΠΎΠ½Π° ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Π° для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ bash скрипт.

Π’ Bash для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условий Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° Бинтаксис Π΅Π΅ Ρ‚Π°ΠΊΠΎΠΉ:

if ΠΊΠΎΠΌΠ°Π½Π΄Π°_условиС
then
ΠΊΠΎΠΌΠ°Π½Π΄Π°
else
ΠΊΠΎΠΌΠ°Π½Π΄Π°
fi

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° провСряСт ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ условия, ΠΈ Ссли 0 (успСх) Ρ‚ΠΎ выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΠ»ΠΈ нСсколько ΠΊΠΎΠΌΠ°Π½Π΄ послС слова then, Ссли ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ 1 выполняСтся Π±Π»ΠΎΠΊ else, fi ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄.

Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π°ΠΌ Ρ‡Π°Ρ‰Π΅ всСго нас интСрСсуСт Π½Π΅ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π° сравнСниС строк ΠΈ чисСл, Ρ‚ΠΎ Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° [[, которая позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сравнСния ΠΈ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° зависящий ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° сравнСния. Π•Π΅ синтаксис:

[[ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€1 ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€2 ]]

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. bash7. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-bash7. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bash7. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ объСдинСниСм всС это ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ скрипт с условным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ:

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. bash8. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-bash8. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bash8. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. bash9. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-bash9. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bash9. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρƒ этой конструкции Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹Π΅ возмоТности, Π½ΠΎ это слишком слоТно Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, я Π½Π°ΠΏΠΈΡˆΡƒ ΠΎΠ± этом ΠΏΠΎΡ‚ΠΎΠΌ. А ΠΏΠΎΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ†ΠΈΠΊΠ»Π°ΠΌ.

Π¦ΠΈΠΊΠ»Ρ‹ Π² скриптах

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π² нСсколько строчСк ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ нСсколько Ρ€Π°Π·. НапримСр, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ написаниС скриптов Π½Π° bash, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ состоят всСго ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строчСк, Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ часами, анализируя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ выполняя Π½ΡƒΠΆΠ½Ρ‹Π΅ дСйствия.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ рассмотрим Ρ†ΠΈΠΊΠ» for. Π’ΠΎΡ‚ Π΅Π³ΠΎ синтаксис:

for пСрСмСнная in список
do
ΠΊΠΎΠΌΠ°Π½Π΄Π°
done

ΠŸΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ вСсь список, ΠΈ присваиваСт ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· списка, послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ присваивания выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, располоТСнныС ΠΌΠ΅ΠΆΠ΄Ρƒ do ΠΈ done.

НапримСр, ΠΏΠ΅Ρ€Π΅Π±Π΅Ρ€Π΅ΠΌ ΠΏΡΡ‚ΡŒ Ρ†ΠΈΡ„Ρ€:

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. bash10. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-bash10. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bash10. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. bash11. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-bash11. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bash11. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Или Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ:

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. bash12. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-bash12. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bash12. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Как Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π°, Π½ΠΎ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ дСйствия, это ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΊΠΎΠ³Π΄Π° выполняСтся созданиС bash скрипта.

while ΠΊΠΎΠΌΠ°Π½Π΄Π° условиС
do
ΠΊΠΎΠΌΠ°Π½Π΄Π°
done

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. bash14. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-bash14. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bash14. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. bash13. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-bash13. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° bash13. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, всС выполняСтся, ΠΊΠΎΠΌΠ°Π½Π΄Π° let просто выполняСт ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, Π² нашСм случаС ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ.

Π₯ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ. Π’Π°ΠΊΠΈΠ΅ конструкции, ΠΊΠ°ΠΊ while, for, if рассчитаны Π½Π° запись Π² нСсколько строк, ΠΈ Ссли Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΈΡ… Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ строку, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Но Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, для этого Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΡƒ с запятой «;». НапримСр, ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ» ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠΉ строки:

ВсС ΠΎΡ‡Π΅Π½ΡŒ просто я пытался Π½Π΅ ΡƒΡΠ»ΠΎΠΆΠ½ΡΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°ΠΌΠΈ ΠΈ возмоТностями bash, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самоС основноС. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ gui для bash скрипта, Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠ°ΠΊ zenity ΠΈΠ»ΠΈ kdialog, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½ΠΈΡ… ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ сообщСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈ Π΄Π°ΠΆΠ΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρƒ Π½Π΅Π³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ основы создания скрипта Π² linux ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π²Π°ΠΌ скрипт, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования. Π― пытался Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ bash скрипты с нуля. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС аспСкты Π±Ρ‹Π»ΠΈ рассмотрСны. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ Π΅Ρ‰Π΅ вСрнСмся ΠΊ этой Ρ‚Π΅ΠΌΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… статСй.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Bash-скрипты, Ρ‡Π°ΡΡ‚ΡŒ 5: сигналы, Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сцСнариями

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π’ ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ Ρ€Π°Π· ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ Π²Π²ΠΎΠ΄Π°, Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ ошибок Π² bash-скриптах, ΠΎ дСскрипторах Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΎ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². БСйчас Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΡƒΠΆΠ΅ достаточно ΠΌΠ½ΠΎΠ³ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ своё. На Π΄Π°Π½Π½ΠΎΠΌ этапС освоСния bash Ρƒ вас Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ вопросы ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌΠΈ скриптами, ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… запуск.

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ Π²Π²ΠΎΠ΄ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½Π° скриптов Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π»ΠΈ Enter, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡƒ запуску ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π½ΠΎ это β€” Π½Π΅ СдинствСнный способ Π²Ρ‹Π·ΠΎΠ²Π° сцСнариСв. БСгодня ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ скрипт ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с сигналами Linux, ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°Ρ… ΠΊ запуску скриптов ΠΈ ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΈΠΌΠΈ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π‘ΠΈΠ³Π½Π°Π»Ρ‹ Linux

Π’ Linux сущСствуСт Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€Ρ‘Ρ… дСсятков сигналов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ систСма ΠΈΠ»ΠΈ прилоТСния. Π’ΠΎΡ‚ список Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ навСрняка пригодятся ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ сцСнариСв ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

Код сигналаНазваниСОписаниС
1SIGHUPΠ—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°
2SIGINTΠ‘ΠΈΠ³Π½Π°Π» остановки процСсса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° (CTRL + C)
3SIGQUITΠ‘ΠΈΠ³Π½Π°Π» остановки процСсса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° (CTRL + \) с Π΄Π°ΠΌΠΏΠΎΠΌ памяти
9SIGKILLБСзусловноС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ процСсса
15SIGTERMΠ‘ΠΈΠ³Π½Π°Π» запроса Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ процСсса
17SIGSTOPΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ приостановка выполнСния процСсса, Π½ΠΎ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹
18SIGTSTPΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° процСсса с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° (CTRL + Z), Π½ΠΎ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹
19SIGCONTΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ выполнСния Ρ€Π°Π½Π΅Π΅ остановлСнного процСсса

Если ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° bash ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ сигнал SIGHUP ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», ΠΎΠ½Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ. ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΎΠ½Π° отправляСт сигнал SIGHUP всСм Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌ Π² Π½Π΅ΠΉ процСссам, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ скрипты.

Bash-скрипты Π½Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‚ эти сигналы, Π½ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ скрипта ΠΊ послСдствиям, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ сигналами.

ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сигналов скриптам

ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° bash позволяСт Π²Π°ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ скриптам сигналы, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ комбинациями клавиш Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅. Π­Ρ‚ΠΎ оказываСтся ΠΎΡ‡Π΅Π½ΡŒ кстати Ссли Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉΡΡ скрипт ΠΈΠ»ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ процСсса

ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ клавиш CTRL + C Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ сигнал SIGINT ΠΈ отправляСт Π΅Π³ΠΎ всСм процСссам, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΌΡΡ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ процСсса с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

ВрСмСнная остановка процСсса

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Число Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках β€” это Π½ΠΎΠΌΠ΅Ρ€ задания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ процСссу. ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° рассматриваСт процСссы, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π² Π½Π΅ΠΉ, ΠΊΠ°ΠΊ задания с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ. ΠŸΠ΅Ρ€Π²ΠΎΠΌΡƒ процСссу назначаСтся Π½ΠΎΠΌΠ΅Ρ€ 1, Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ β€” 2, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Если Π²Ρ‹ приостановитС Π·Π°Π΄Π°Π½ΠΈΠ΅, привязанноС ΠΊ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅, ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Π½Π΅Ρ‘, bash выдаст ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ приостановлСнныС задания ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Выглядит Π΅Ρ‘ Π²Ρ‹Π·ΠΎΠ² Ρ‚Π°ΠΊ:

ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ сигналов

Команда trap позволяСт скрипту Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° сигналы, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° выполняСтся ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ Π±Π΅Π· Π΅Π³ΠΎ участия.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ trap задаётся ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π΄ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, ΠΈ список сигналов, Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС это всСго ΠΎΠ΄ΠΈΠ½ сигнал:

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ сигнала Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· скрипта

ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ сигнал Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· скрипта ΠΌΠΎΠΆΠ½ΠΎ, использовав ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ trap имя сигнала EXIT :

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ сигнала Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· скрипта

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… сигналов ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π°

Для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… скриптом сигналов ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ trap с Π½ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° сигналов

ПослС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ сигналы Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ-Π½ΠΎΠ²ΠΎΠΌΡƒ.

И Π½Π°ΠΆΠΌΡ‘ΠΌ CTRL + C Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅.

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π‘ΠΈΠ³Π½Π°Π», ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ Π΄ΠΎ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π°

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ сцСнариСв ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅

Иногда bash-скриптам трСбуСтся Π½Π΅ΠΌΠ°Π»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для выполнСния Π½Π΅ΠΊΠΎΠ΅ΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. ΠŸΡ€ΠΈ этом Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС, Π½Π΅ доТидаясь Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ скрипта. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ это Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΈ слоТно.

Запустим Π΅Π³ΠΎ, ΡƒΠΊΠ°Π·Π°Π² послС ΠΈΠΌΠ΅Π½ΠΈ символ ампСрсанда ( & ):

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΊΠ°ΠΊ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ процСсс.

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Запуск скрипта Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅

Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ процСссС, Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» вывСдСтся Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Π° ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ сообщСниС ΠΎΠ± этом.

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅, Ссли Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, скрипт, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉΡΡ Π² Ρ„ΠΎΠ½Π΅, Ρ‚Π°ΠΊ ΠΆΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π§Ρ‚ΠΎ Ссли Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ скрипт ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ послС закрытия Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°?

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ скриптов, Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°

ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ эту ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΡƒ ΠΏΡ€ΠΈ запускС нашСго скрипта:

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π».

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π·Π°Π΄Π°Π½ΠΈΠΉ

Команда jobs позволяСт ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ задания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅. НапишСм Ρ‚Π°ΠΊΠΎΠΉ скрипт:

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Запуск ΠΈ приостановка скрипта

Запустим Ρ‚ΠΎΡ‚ ΠΆΠ΅ скрипт Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΏΡ€ΠΈ этом ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Π²Ρ‹Π²ΠΎΠ΄ скрипта Π² Ρ„Π°ΠΉΠ» Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ» Π½Π° экранС:

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ свСдСний ΠΎ скриптах

ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊ приостановлСнных Π·Π°Π΄Π°Π½ΠΈΠΉ

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ скрипт выполняСтся Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Если Ρƒ вас имССтся нСсколько приостановлСнных Π·Π°Π΄Π°Π½ΠΈΠΉ, для пСрСзапуска ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ задания ΠΊΠΎΠΌΠ°Π½Π΄Π΅ bg ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€.

Для пСрСзапуска задания Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ fg :

ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ запуска скриптов

Π’Ρ‹Π·ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ at выглядит Ρ‚Π°ΠΊ:

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° распознаёт мноТСство Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² указания Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½ΠΈΠΉ с использованиСм ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ at

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список Π·Π°Π΄Π°Π½ΠΈΠΉ, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… выполнСния, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ atq :

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Бписок Π·Π°Π΄Π°Π½ΠΈΠΉ, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… выполнСния

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½ΠΈΠΉ, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… выполнСния

Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. image loader. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС Ρ„ΠΎΡ‚ΠΎ. Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² bash скриптС. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ рассмотрСли ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ, синонимы ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Под спойлСром я Ρ‚Π°ΠΊΠΆΠ΅ рассказал, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.

Запуск скриптов ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ

ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ запуска скриптов с использованиСм ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ at способно ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Тизнь Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ситуациях. Но ΠΊΠ°ΠΊ Π±Ρ‹Ρ‚ΡŒ, Ссли Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ скрипт выполнялся Π² ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ врСмя Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ, ΠΈΠ»ΠΈ Ρ€Π°Π· Π² нСдСлю, ΠΈΠ»ΠΈ Ρ€Π°Π· Π² мСсяц?

Crontab выполняСтся Π² Ρ„ΠΎΠ½Π΅ ΠΈ, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… cron-Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…, запускаСт задания ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ.

ΠŸΡ€ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ запуска скрипта ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ crontab ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Π½ΠΈΠ΅, Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅:

НапримСр, Ссли Π½Π°Π΄ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ΠΊΠΈΠΉ скрипт с ΠΈΠΌΠ΅Π½Π΅ΠΌ command выполнялся Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π² 10:30, этому Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ такая запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π·Π°Π΄Π°Π½ΠΈΠΉ:

Π—Π΄Π΅ΡΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ символ Β« * Β», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ для ΠΏΠΎΠ»Π΅ΠΉ, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΡ… дСнь мСсяца, мСсяц ΠΈ дСнь Π½Π΅Π΄Π΅Π»ΠΈ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ cron Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ мСсяца Π² 10:30.

Если, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°Π΄ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ скрипт запускался Π² 4:30PM ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ понСдСльник, понадобится ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π·Π°Π΄Π°Π½ΠΈΠΉ Ρ‚Π°ΠΊΡƒΡŽ запись:

НумСрация Π΄Π½Π΅ΠΉ Π½Π΅Π΄Π΅Π»ΠΈ начинаСтся с 0, 0 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²ΠΎΡΠΊΡ€Π΅ΡΠ΅Π½ΡŒΠ΅, 6 β€” субботу. Π’ΠΎΡ‚ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π—Π΄Π΅ΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² 12 часов дня Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ дСнь ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ мСсяца.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ формирования расписания:

Благодаря этой ΠΊΠΎΠΌΠ°Π½Π΄Π΅ скрипт Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π² 10:30. Если Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Ρ‘Ρ‚Π΅ΡΡŒ с ошибкой Β«Resource temporarily unavailableΒ», Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π½ΠΈΠΆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

ΠžΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ пСриодичСский запуск скриптов с использованиСм cron ΠΌΠΎΠΆΠ½ΠΎ Π΅Ρ‰Ρ‘ ΠΏΡ€ΠΎΡ‰Π΅, воспользовавшись нСсколькими ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ дирСкториями:

Если ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» скрипта Π² ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π½ΠΈΡ…, это ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚, соотвСтствСнно, ΠΊ Π΅Π³ΠΎ СТСчасному, Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΌΡƒ, Π΅ΠΆΠ΅Π½Π΅Π΄Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΈΠ»ΠΈ СТСмСсячному запуску.

Запуск скриптов ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Π² систСму ΠΈ ΠΏΡ€ΠΈ запускС ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ

ΠΠ²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запуск скриптов ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠΏΠΈΡ€Π°ΡΡΡŒ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ события, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² систСму ΠΈΠ»ΠΈ запуск ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. Π’ΡƒΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎ Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ситуациях. НапримСр, это ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹:

Π˜Ρ‚ΠΎΠ³ΠΈ

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

Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ! А Π²Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ срСдствами планирования запуска сцСнариСв ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ? Если Π΄Π° β€” расскаТитС поТалуйста ΠΎ Π½ΠΈΡ….

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠžΡΠ½ΠΎΠ²Ρ‹ BASH. Π§Π°ΡΡ‚ΡŒ 1

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

break Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° for, while ΠΈΠ»ΠΈ until
continue Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° for, while ΠΈΠ»ΠΈ until
echo Π²Ρ‹Π²ΠΎΠ΄ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ, Π½Π° стандартноС устройство Π²Ρ‹Π²ΠΎΠ΄Π°
exit Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ
export ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π² Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ процСссы Π² срСдС
hash Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° ΠΏΡƒΡ‚Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ
kill посылаСт сигнал Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ процСссу
pwd Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³
read Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ строку ΠΈΠ· Π²Π²ΠΎΠ΄Π° ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π΅ для присвоСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ.\
return заставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π²Ρ‹ΠΉΡ‚ΠΈ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ
shift ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π°Π»Π΅Π²ΠΎ
test вычисляСт условноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
times Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ систСмноС врСмя, использованноС ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ ΠΈ Π΅Π΅ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ
trap ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ сигнала
unset Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ
wait ΠΆΠ΄Π΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ процСсса ΠΈ сообщаСт Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ΅ состояниС.

И ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ ΠΊΡ€ΠΎΠΌΠ΅ встроСнных ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»ΡƒΡŽ ΠΊΡƒΡ‡Ρƒ Π²Π½Π΅ΡˆΠ½ΠΈΡ…, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ познакомимся ΡƒΠΆΠ΅ Π² процСссС

Π§Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ с самого Π½Π°Ρ‡Π°Π»Π°

1. Π›ΡŽΠ±ΠΎΠΉ bash-скрипт Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ со строки:

#!/bin/bash
Π² этой строкС послС #! указываСтся ΠΏΡƒΡ‚ΡŒ ΠΊ bash-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ, поэтому Ссли ΠΎΠ½ Ρƒ вас установлСн Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС(Π³Π΄Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π½Π°Π±Ρ€Π°Π² whereis bash) помСняйтС Π΅Ρ‘ Π½Π° ваш ΠΏΡƒΡ‚ΡŒ.
2. ΠšΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с символа # (ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки).
3. Π’ bash ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏΠ°(ΠΎ Π½ΠΈΡ… Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π½ΠΈΠΆΠ΅)

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ скрипта

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ нСбольшой ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния скрипта:

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΡ‹ познакомились ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ скрипту ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, врСмя ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ:

Условия

УсловныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Π΄ΡƒΠΌΠ°ΡŽ, Π·Π½Π°ΠΊΠΎΠΌΡ‹ практичСски ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‚ΡŒ Ρ€Π°Π· пытался Π½Π° Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ bash условия ΠΏΠΈΡˆΡƒΡ‚ΡΡ слСд. ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅):
#!/bin/bash
source=$1 #Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ source засовываСм ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ скрипта
dest=$2 #Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ dest засовываСм Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ скрипта

Условия. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€

esac #ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° case.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹:
ite@ite-desktop:

UPD: Π˜ΡΠΏΡ€Π°Π²ΠΈΠ» Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ошибки
UPD: Обновил Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎ условия if-then-else

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *