Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case

10.4. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Ρ‹Π±ΠΎΡ€Π°

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ case ΠΈ select тСхничСски Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ исполнСниС Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°. Однако, ΠΎΠ½ΠΈ, ΠΊΠ°ΠΊ ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ Ρ…ΠΎΠ΄ΠΎΠΌ исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² зависимости ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… условий.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ case эквивалСнтна конструкции switch Π² языкС C/C++. Она позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ участок ΠΊΠΎΠ΄Π°, Π² зависимости ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условий. Она являСтся, своСго Ρ€ΠΎΠ΄Π°, ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ записи большого количСства ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² if/then/else ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΈΠΌ инструмСнтом ΠΏΡ€ΠΈ создании Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° мСню.

Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. Π€ΠΎΡ‚ΠΎ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case

    Π—Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ здСсь Π½Π΅ производится разбиСния Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ слова.

    Π‘Π»ΠΎΠΊ case Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом esac ( case записанноС Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС).

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 10-24. ИспользованиС case

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 10-25. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ мСню с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ case

    ΠžΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования case для Π°Π½Π°Π»ΠΈΠ·Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 10-26. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ case допускаСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ подстановку ΠΊΠΎΠΌΠ°Π½Π΄ вмСсто Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

    ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ case допускаСт использованиС ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Ρ… конструкций.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 10-27. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сравнСния строк

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 10-28. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²Π²ΠΎΠ΄Π°

    ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ select Π±Ρ‹Π» заимствован ΠΈΠ· Korn Shell, ΠΈ являСтся Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ инструмСнтом, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΏΡ€ΠΈ создании мСню.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 10-29. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ мСню с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ select

    Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ это с ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π°

    Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅ Π·Π°Π΄Π°Π½ список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 10-30. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ мСню с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ select Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

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

    ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ case Π² Bash

    ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ case bash ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для упрощСния слоТных условных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ². ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° case вмСсто Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² if ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ваши сцСнарии bash Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ простыми Π² обслуТивании.

    ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ case Bash ΠΈΠΌΠ΅Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ switch Javascript ΠΈΠ»ΠΈ C. ОсновноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° C switch ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ case Π² Bash Π½Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ поиск совпадСния с шаблоном послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ нашСл ΠΎΠ΄ΠΈΠ½ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, связанныС с этим шаблоном.

    Π’ этом руководствС ΠΌΡ‹ рассмотрим основы ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° case Π² Bash ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² сцСнариях ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ.

    синтаксис ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° case

    ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ case Bash ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ:

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ заявлСния case

    Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° case Π² сцСнарии bash, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ язык Π΄Π°Π½Π½ΠΎΠΉ страны:

    Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ настраиваСмый сцСнарий ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ» ΠΈ запуститС Π΅Π³ΠΎ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

    Π‘ΠΊΡ€ΠΈΠΏΡ‚ попросит вас ввСсти страну. НапримСр, Ссли Π²Ρ‹ Π½Π°Π±Π΅Ρ€Π΅Ρ‚Π΅ Β«Π›ΠΈΡ‚Π²Π°Β», ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° echo Π² этом ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

    Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄:

    Если Π²Ρ‹ Π²Π²Π΅Π΄Π΅Ρ‚Π΅ страну, которая Π½Π΅ соотвСтствуСт Π½ΠΈΠΊΠ°ΠΊΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, ΠΊΡ€ΠΎΠΌΠ΅ подстановочного Π·Π½Π°ΠΊΠ° Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, скаТСм, АргСнтины, сцСнарий Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ echo Π²Π½ΡƒΡ‚Ρ€ΠΈ прСдлоТСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

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

    К настоящСму Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ case bash. Они часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. НапримСр, сцСнарии ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ case для запуска, остановки ΠΈΠ»ΠΈ пСрСзапуска слуТб.

    Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ вопросы ΠΈΠ»ΠΈ ΠΎΡ‚Π·Ρ‹Π²Ρ‹, Π½Π΅ ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ.

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

    Bash ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Case

    Bash Case Statement

    Π’ этом руководствС ΠΌΡ‹ рассмотрим основы case ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Bash ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² сцСнариях ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ.

    Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. Π€ΠΎΡ‚ΠΎ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case

    Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ bash case ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для упрощСния слоТных условий, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π²Ρ‹Π±ΠΎΡ€Π°. ИспользованиС case ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° вмСсто Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… if ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ваши bash-сцСнарии Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌΠΈ ΠΈ Π±ΠΎΠ»Π΅Π΅ простыми Π² обслуТивании.

    ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Bash case ΠΈΠΌΠ΅Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ с switch ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Javascript ΠΈΠ»ΠΈ C. ОсновноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ switch ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° C, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Bash case Π½Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ поиск соотвСтствия ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ нашСл ΠΎΠ΄ΠΈΠ½ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, связанныС с этим шаблоном.

    Бинтаксис ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° case

    ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Bash case ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ:

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ описания случая

    Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования case ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² скриптС bash, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ язык Π΄Π°Π½Π½ΠΎΠΉ страны:

    Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ скрипт Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΉΠ»Π° ΠΈ запуститС Π΅Π³ΠΎ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

    Π‘ΠΊΡ€ΠΈΠΏΡ‚ попросит вас ввСсти страну. НапримСр, Ссли Π²Ρ‹ Π²Π²Π΅Π΄Π΅Ρ‚Π΅ Β«Π›ΠΈΡ‚Π²Π°Β», ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, ΠΈ echo ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² этом ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°.

    Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄:

    Если Π²Ρ‹ Π²Π²Π΅Π΄Π΅Ρ‚Π΅ страну, которая Π½Π΅ соотвСтствуСт Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, ΠΊΡ€ΠΎΠΌΠ΅ подстановочного символа ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, скаТСм, АргСнтина, скрипт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ echo ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π²Π½ΡƒΡ‚Ρ€ΠΈ прСдлоТСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

    Π’Ρ‹Π²ΠΎΠ΄

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

    НСмного ΠΎΠ±ΠΎ всСм ΠΈ всС ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎΠΌ, ΠΈΠ»ΠΈ практичСский ΠΎΠΏΡ‹Ρ‚ систСмного администратора.

    Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. Π€ΠΎΡ‚ΠΎ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case

    Π”Π΅ΠΊΠ°Π±Ρ€ΡŒ 2009

    ΠŸΠ½Π’Ρ‚Π‘Ρ€Π§Ρ‚ΠŸΡ‚Π‘Π±Π’Ρ
    « НояЯнв »
    123456
    78910111213
    14151617181920
    21222324252627
    28293031

    Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. Π€ΠΎΡ‚ΠΎ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case

    На этой Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ bash. БСгодня ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± объСдинСнии ΠΊΠΎΠΌΠ°Π½Π΄ Π² bash, ΠΎ конструкции case ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ…. Но сначала ΠΎ нСзаслуТСнно Π·Π°Π±Ρ‹Ρ‚ΠΎΠΉ Π½Π° ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ конструкции case.

    case ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для вСтвлСния, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π° Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ соотвСтствиС ΠΈ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ВмСсто case ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ if, Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ конструкции выглядят Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎ ΠΈ ΠΈΡ… Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠ΄ΠΎΠ±Π½ΠΎ β€œΡ‡ΠΈΡ‚Π°Ρ‚ΡŒβ€ Π² скриптах.

    ΠžΠ±Ρ‰ΠΈΠΉ синтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ case ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

    Π’ качСствС значСния здСсь использована конструкция $1, которая содСрТит ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ скрипту ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. На ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ ΠΈ скрипту. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ свСрятся с шаблонами свСрху Π²Π½ΠΈΠ· ΠΈ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ соотвСтствиС, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π±Π»ΠΎΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠ΅ΠΆΠ΄Ρƒ шаблоном ΠΈ ;;. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта:

    Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /etc/init.d/ располоТСны скрипты управлСния слуТбами Linux. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ case Π² Π½ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… скрипту ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²: start, stop, restart, reload ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…. НиТС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ скрипта /etc/init.d/reboot:

    ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ case Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ скриптС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° /etc/init.d/.

    ОбъСдинСниС команд

    Π― ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», Ρ‡Ρ‚ΠΎ Ссли Π² ΠΎΠ΄Π½ΠΎΠΉ строкС скрипта ΠΌΡ‹ пишСм Π΄Π²Π° ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слова ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ конструкции, Ρ‚ΠΎ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ символом ;. Π’ΠΎΡ‡ΠΊΠ° с запятой ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ способ объСдинСния ΠΊΠΎΠΌΠ°Π½Π΄ (ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова Ρ‚ΠΎΠΆΠ΅ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ bash ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹). ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ записанныС Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π² нСзависимости ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° выполнСния ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½ΠΈΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Ρ‚Π°ΠΊ ΠΈ Π² скриптС.

    Как Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° ΠΎΠ΄Π½ΠΎΠΉ строкС Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΎ 6 ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

    Для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ запуска ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ Π²Π°ΠΌ ампСрсанд &. Π’Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ.

    $ true && echo «1» && false && echo «2»
    1

    Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° true Π²Π΅Ρ€Π½ΡƒΠ»Π° 0 ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° echo β€œ1β€³ Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΈ Ρ‚ΠΎΠΆΠ΅ Π²Π΅Ρ€Π½ΡƒΠ»Π° 0, послС Ρ‡Π΅Π³ΠΎ Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° false, которая Π²Π΅Ρ€Π½ΡƒΠ»Π° 1 ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ (ΠΊΠΎΠΌΠ°Π½Π΄Π° echo 2 Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡŒ).

    Команда || Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли прСдыдущая ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Π΅Ρ€Π½ΡƒΠ»Π° ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ нуля (ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ дСйствуСт Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ Ссли всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ||). Если ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Π΅Ρ€Π½ΡƒΠ»Π° 0, Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ дальнСйшСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ прСрываСтся. Если Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ && Π½Π° ||, Ρ‚ΠΎ выполнится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° true, которая Π²Π΅Ρ€Π½Π΅Ρ‚ 0 ΠΈ дальнСйшиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹. Если Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ true Π½Π° false, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

    $ false || echo «1» || false || echo «2»
    1

    ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΡ && ΠΈ || ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ довольно слоТныС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ объСдинСния ΠΊΠΎΠΌΠ°Π½Π΄. Но Π² этому случаС Π½ΡƒΠΆΠ½ΠΎ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ происходит Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ объСдинСнии.

    Рассмотрим Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° объСдинСния ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΡ… выполнСния:

    $ false || echo «1» || false || echo «2»
    1
    igor @ ubuntu:

    $ false || echo «1» || false && echo «2»
    1
    2

    Рассмотрим Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ эту Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ:

    ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π΅Ρ‰Π΅ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

    $ true || echo «1» && false || echo «2»
    2

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

    Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Bash Shell

    ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚. Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ ΠΊ экзамСну RedHat RHCE. На ΠΌΠΎΠΉ взгляд ΠΎΡ‡Π΅Π½ΡŒ доступно рассказываСтся ΠΎΠ± основах bash.

    Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ β€” Π½Π°ΡƒΠΊΠ° сама ΠΏΠΎ сСбС. НС вдаваясь Π² подробности всСго, Ρ‡Ρ‚ΠΎ происходит Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌΒ», Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ элСмСнты для написания собствСнных скриптов, ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит Π² сторонних сцСнариях ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ.

    Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case. Π€ΠΎΡ‚ΠΎ Π§Π΅ΠΌ Π² bash заканчиваСтся конструкция case

    ПониманиС основных элСмСнтов сцСнариСв ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ

    По сути, сцСнарий ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ прСдставляСт собой список ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… условиях.

    Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ слоТныС сцСнарии ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, рСкомСндуСтся Π½Π°Ρ‡Π°Ρ‚ΡŒ с Π±Π°Π·ΠΎΠ²Ρ‹Ρ… сцСнариСв.

    НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΎΡ‡Π΅Π½ΡŒ простой скрипт:

    Π—Π΄Π΅ΡΡŒ содСрТатся нСсколько элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²ΠΎ всСх скриптах. Для Π½Π°Ρ‡Π°Π»Π°, Π΅ΡΡ‚ΡŒ shebang β€” это строка #!/bin/bash. Когда скрипт запускаСтся ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΎΠ½ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² скриптС.

    Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ shebang. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ shebang ясно Π΄Π°Ρ‘Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ скрипт Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ bash.

    Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. НапримСр, Ссли ваш скрипт содСрТит ΠΊΠΎΠ΄ Π½Π° языкС Perl, shebang Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ #!/usr/bin/perl. ΠΠ°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ сцСнарий с shebang являСтся Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ; Ссли ΠΎΠ½ ΠΎΠΏΡƒΡ‰Π΅Π½, ΠΊΠΎΠ΄ сцСнария Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для запуска скрипта.

    Π‘Ρ€Π°Π·Ρƒ послС shebang располоТСна Ρ‡Π°ΡΡ‚ΡŒ, ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰Π°Ρ, ΠΎ Ρ‡Π΅ΠΌ сцСнарий. НСсколько строк ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сцСнария β€” Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ идСя. Π’ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΌ скриптС часто ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° сцСнарий становится Π΄Π»ΠΈΠ½Π½Π΅Π΅, ΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ всё большС людСй Π²ΠΎΠ²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ Π² Π΅Π³ΠΎ написаниС ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, становится ΠΌΠ΅Π½Π΅Π΅ понятно, Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΡ€Ρ‹ Π½Π°ΠΌΠ΅Ρ€Π΅Π²Π°ΡŽΡ‚ΡΡ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

    Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ситуации, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ строки ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², начиная ΠΊΠ°ΠΆΠ΄ΡƒΡŽ символом #. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΠ΅Ρ€Π²Ρ‹Ρ… строках, Π½ΠΎ ΠΈ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π° сцСнария. Π­Ρ‚ΠΎ навСрняка ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, Ссли Π²Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ свой скрипт Ρ‡Π΅Ρ€Π΅Π· нСсколько мСсяцСв!

    Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Ρ‹, Π½ΠΎ ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ строки.

    НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, всё ΠΎΡ‚ символа # ΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° строки являСтся ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ.

    ПослС Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² располоТСно Ρ‚Π΅Π»ΠΎ сцСнария. Π’ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это нСсколько ΠΊΠΎΠΌΠ°Π½Π΄, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π’Π΅Π»ΠΎ сцСнария ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Π΅Π³ΠΎ развития.

    Π’ ΠΊΠΎΠ½Ρ†Π΅ скрипта я Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ» ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ exit 0. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Ρ…ΠΎΠ΄Π° сообщаСт Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅, Π±Ρ‹Π» Π»ΠΈ сцСнарий ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌ. БостояниС Π²Ρ‹Ρ…ΠΎΠ΄Π° послСднСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² сцСнарии являСтся состояниСм Π²Ρ‹Ρ…ΠΎΠ΄Π° самого сцСнария, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° exit 0 Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΊΠΎΠ½Ρ†Π΅ сцСнария.

    ПолСзно Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с exit, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅, ΠΊΠ°ΠΊ всС ΠΏΡ€ΠΎΡˆΠ»ΠΎ.

    Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ сцСнарий Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /bin, послС Ρ‡Π΅Π³ΠΎ Π² любом мСстС Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы просто ввСсти имя Ρ„Π°ΠΉΠ»Π°, ΠΈ сцСнарий выполнится.

    Командой vi /bin/datetime создадим Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /bin Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ datetime. Π’ созданный Ρ„Π°ΠΉΠ» вставим это содСрТимоС:

    Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΠ² Ρ„Π°ΠΉΠ», Π²Π²Π΅Π΄ΠΈΡ‚Π΅ chmod +x /bin/datetime, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρƒ ΠΏΡ€Π°Π²Π° Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² домашний ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ cd

    ΠΈ просто Π²Π²Π΅Π΄ΠΈΡ‚Π΅ datetime.

    ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² домашний ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ cd

    ΠΈ просто Π²Π²Π΅Π΄ΠΈΡ‚Π΅ datetime.

    ИспользованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

    bash-скрипты β€” это Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС, Ρ‡Π΅ΠΌ просто список ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Одна ΠΈΠ· приятных сторон скриптов Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ скрипт Π³ΠΈΠ±ΠΊΠΈΠΌ. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

    ИспользованиС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

    ΠŸΡ€ΠΈ запускС скрипта ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. АргумСнт β€” это всё, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ сцСнария. АргумСнты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ скрипт Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ. Π’ΠΎΠ·ΡŒΠΌΡ‘ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ useradd lisa. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° β€” это useradd, Π° Π΅Ρ‘ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ β€” lisa β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

    Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ создан ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ lisa.

    Π’ тСкстС сцСнария ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ обозначаСтся $1, Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ β€” $2 ΠΈ Ρ‚. Π΄. Листинг 1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ этот ΠΊΠΎΠ΄, ΡƒΠΊΠ°Π·Π°Π² Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π»ΡŽΠ±Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

    Под ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ подразумСваСтся Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ запуском скрипта. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² послС ΠΈΠΌΠ΅Π½ΠΈ скрипта argument я ΡƒΠΊΠ°Π·Π°Π» lisa, lori ΠΈ bob:

    Π’ ЛистингС 2 прСдставлСны Π΄Π²Π° Π½ΠΎΠ²Ρ‹Ρ… элСмСнта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ:

    Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΠΊΠ° Π΅ΡΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Ρ‚Π΅Π»ΠΎ сцСнария выполняСтся.

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

    Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ скриптом ΠΈΠ· листинга 2 Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

    ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

    ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ β€” это ΠΌΠ΅Ρ‚ΠΊΠ°, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обозначСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ мСста Π² памяти, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТит ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ статичСски с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ NAME=value ΠΈΠ»ΠΈ динамичСским способом. БущСствуСт Π΄Π²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для динамичСского опрСдСлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

    Листинг 3. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ скрипта, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ read

    * β€” Π½Π° самом Π΄Π΅Π»Π΅ трСмя источник (ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°)

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ написании ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ test с ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ скобками Π²Π°ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ послС ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ скобки ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ скобкой, Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ then слСдуСт сразу Π·Π° test. Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΡ‡ΠΊΠ° с запятой (;). Π’ΠΎΡ‡ΠΊΠ° с запятой являСтся Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ строку Π² скриптС.

    Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ then Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: ΠΊΠΎΠΌΠ°Π½Π΄Π° echo, которая ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ сообщСниС Π½Π° экранС, ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° read.

    Команда read останавливаСт сцСнарий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄ ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΈ сохранСн Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ TEXT. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ read TEXT ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ всС Π²Π²Π΅Π΄Ρ‘Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ TEXT, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ·ΠΆΠ΅ Π² скриптС.

    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ прСдставлСна ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ else. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ послС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° else Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π²ΠΎ всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… случаях, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΠΈΠ½Π°Ρ‡Π΅, Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π±Ρ‹Π» прСдоставлСн». Если это Ρ‚Π°ΠΊ, Ρ‚ΠΎ опрСдСляСтся пСрСмСнная TEXT ΠΈ Π΅ΠΉ присваиваСтся Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ $1.

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π²Π²ΠΎΠ΄ΠΎΠΌ.

    ИспользованиС условий ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ²

    Как Π²Ρ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, Π² скриптС ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. Π­Ρ‚ΠΈ условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ условиС выполняСтся.

    Π’ bash Π΅ΡΡ‚ΡŒ нСсколько условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ.

    if then else

    ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ test ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π² справочникС ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ man test.

    Основная конструкция if Π΅ΡΡ‚ΡŒ if… then… fi.

    Она сравниваСт ΠΎΠ΄Π½ΠΎ условиС, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

    Π’ листингС 3 Π²Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π΄Π²Π° условия, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ else Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. Π’ листингС 4 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ нСсколько условий ΠΎΡ‚ if Π΄ΠΎ else. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ нСсколько ΠΊΠΎΠΌΠ°Π½Π΄ test.

    Листинг 4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с if then else

    ВмСсто написания ΠΏΠΎΠ»Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² if… then Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ || Π° Ρ‚Π°ΠΊΠΆΠ΅ &&. || являСтся логичСским Β«Π˜Π›Π˜Β» ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли пСрвая Ρ‡Π°ΡΡ‚ΡŒ Π½Π΅ Π²Π΅Ρ€Π½Π°; && являСтся логичСским «И» ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли пСрвая Ρ‡Π°ΡΡ‚ΡŒ Π²Π΅Ρ€Π½Π°.

    Рассмотрим эти Π΄Π²Π΅ строки:

    Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ выполняСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, пуст Π»ΠΈ $1. Если эта ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²Π΅Ρ€Π½Π° (Ρ‡Ρ‚ΠΎ, Π² основном, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ с ΠΊΠΎΠ΄ΠΎΠΌ Π²Ρ‹Ρ…ΠΎΠ΄Π° 0), выполняСтся вторая ΠΊΠΎΠΌΠ°Π½Π΄Π°.

    Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° ping ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ доступности хоста.
    Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ логичСскоС Β«Π˜Π›Π˜Β» для Π²Ρ‹Π²ΠΎΠ΄Π° тСкста Β«node is not availableΒ» Π² случаС Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ping.

    Π’Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ часто вмСсто условного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ && ΠΈ ||. Π’ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΈ Π½ΠΈΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² использовании условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π»ΠΈΠ±ΠΎ if… then… else, Π»ΠΈΠ±ΠΎ && ΠΈ ||.

    Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅. ИспользованиС if… then… else

    Π’ этом ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΈ Π²Ρ‹ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π°Π΄ сцСнариСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСряСт Ρ‡Ρ‚ΠΎ являСтся Ρ„Π°ΠΉΠ»ΠΎΠΌ, Π° Ρ‡Ρ‚ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ.

    Π¦ΠΈΠΊΠ» for

    Π¦ΠΈΠΊΠ» for прСдставляСт собой ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π’ листингС 5 Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с for, Π³Π΄Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ опрСдСляСтся ΠΈ обрабатываСтся, ΠΏΠΎΠΊΠ° Π² этом Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ значСния.

    Π¦ΠΈΠΊΠ» for всСгда начинаСтся с ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова for, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт условиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ. Π—Π°Ρ‚Π΅ΠΌ слСдуСт ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово do, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹, Ссли условиС истинно, Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Ρ†ΠΈΠΊΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова done.

    Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ Π² листингС 5, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ условиС прСдставляСт собой Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ чисСл Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках, Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ COUNTER.

    Π’Π½ΡƒΡ‚Ρ€ΠΈ ((… )) Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ арифмСтичСскиС выраТСния ΠΈ возвращаСтся ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. НапримСр, Π² ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС, конструкция a=$(( 5 + 3 )) присвоит ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«aΒ» Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния Β«5 + 3Β», ΠΈΠ»ΠΈ 8. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π² стилС языка C.

    Π’ листингС 6 Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠΎΠΈΡ… Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… однострочников с for. Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ опрСдСляСтся Π½Π° этот Ρ€Π°Π· ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ чисСл, начиная со 100 ΠΈ доходя Π΄ΠΎ 104.

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ опрСдСляСтся Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½: сначала Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ число, Π·Π°Ρ‚Π΅ΠΌ Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ послСднСС число Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅. ΠŸΡ€ΠΈ этом с for i in для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· этих Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² присваиваСтся пСрСмСнная i. КаТдоС ΠΈΠ· этих чисСл присваиваСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ i ΠΈ Π·Π°Ρ‚Π΅ΠΌ выполняСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° ping, Π³Π΄Π΅ опция -c 1 Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ отправляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ запрос.

    Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ping Π½Π΅ учитываСтся, поэтому Π΅Ρ‘ Π²Ρ‹Π²ΠΎΠ΄ пСрСнаправляСтся Π² /dev/null. На основании состояния Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ping выполняСтся Ρ‡Π°ΡΡ‚ΡŒ выраТСния Π·Π° &&. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли хост доступСн, отобраТаСтся строка, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

    ПониманиС while и until

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’Π°ΠΊ ΠΈ Π½Π΅ понял, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ этот скрипт. Π’ ΠΌΠΎΡ‘ΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ CentOS 7 ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‚Π°ΠΌ Π½Π΅Ρ‚ monitor, хотя Π² скриптС явно написано: Π“Π΄Π΅-Ρ‚ΠΎ ΠΏΠΎΠ» часа Π³ΡƒΠ³Π»ΠΈΠ» для CetOS ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ monitor, Π½ΠΎ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ Π½Π°ΡˆΡ‘Π». И Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ понятно ΠΊΠ°ΠΊΠΈΠΌ Ρ‚ΡƒΡ‚ Π±ΠΎΠΊΠΎΠΌ monitor Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ps aux. Π’ любом случаС Ρ‚Π°ΠΊ ΠΈ Π½Π΅ понял, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ этот срипт. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ ΠΏΡ€ΠΎΡΡŒΠ±Π° ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ этот вопрос, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкст ΠΈ/ΠΈΠ»ΠΈ скрипт.

    Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ Π² листингС 7 состоит ΠΈΠ· Π΄Π²ΡƒΡ… частСй. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π΅ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ» while. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π΅ΡΡ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρ†ΠΈΠΊΠ» while большС Π½Π΅ оцСниваСтся ΠΊΠ°ΠΊ true.

    Π―Π΄Ρ€ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π° while являСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° ps, которая ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ $1.

    Π’Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ps aux ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² /dev/tty11. Π­Ρ‚ΠΎ позволяСт ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈΠ· tty11, Ссли это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

    ПослС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² while ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, Ссли провСряСмоС условиС истинно. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС это ΠΊΠΎΠΌΠ°Π½Π΄Π° sleep 5, которая приостанавливаСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ скрипта Π½Π° 5 сСкунд.

    Пока условиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° while истинно, Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ. Если ΠΆΠ΅ условиС Π»ΠΎΠΆΠ½ΠΎ (Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ процСсс большС Π½Π΅ доступСн), Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» останавливаСтся ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π° Π½ΠΈΠΌ.

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

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

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