Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
Bash-скрипты, Ρ‡Π°ΡΡ‚ΡŒ 2: Ρ†ΠΈΠΊΠ»Ρ‹
Bash-скрипты, Ρ‡Π°ΡΡ‚ΡŒ 3: ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки
Bash-скрипты, Ρ‡Π°ΡΡ‚ΡŒ 4: Π²Π²ΠΎΠ΄ ΠΈ Π²Ρ‹Π²ΠΎΠ΄
Bash-скрипты, Ρ‡Π°ΡΡ‚ΡŒ 5: сигналы, Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сцСнариями
Bash-скрипты, Ρ‡Π°ΡΡ‚ΡŒ 6: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ
Bash-скрипты, Ρ‡Π°ΡΡ‚ΡŒ 7: sed ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° тСкстов
Bash-скрипты, Ρ‡Π°ΡΡ‚ΡŒ 8: язык ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… awk
Bash-скрипты, Ρ‡Π°ΡΡ‚ΡŒ 9: рСгулярныС выраТСния
Bash-скрипты, Ρ‡Π°ΡΡ‚ΡŒ 10: практичСскиС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹
Bash-скрипты, Ρ‡Π°ΡΡ‚ΡŒ 11: expect ΠΈ автоматизация ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚

БСгодня ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ bash-скриптах. Π­Ρ‚ΠΎ β€” сцСнарии ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, написанныС для ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ bash. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” zsh, tcsh, ksh, Π½ΠΎ ΠΌΡ‹ сосрСдоточимся Π½Π° bash. Π­Ρ‚ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для всСх ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ…, СдинствСнноС условиС β€” ΡƒΠΌΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Linux.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки β€” это Π½Π°Π±ΠΎΡ€Ρ‹ Ρ‚Π΅Ρ… ΠΆΠ΅ самых ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, собранныС Π² Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Π΅ Π½Π΅ΠΊΠΎΠ΅ΠΉ ΠΎΠ±Ρ‰Π΅ΠΉ Ρ†Π΅Π»ΡŒΡŽ. ΠŸΡ€ΠΈ этом Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π»ΠΈΠ±ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ, Π»ΠΈΠ±ΠΎ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΈ β€” это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ способ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ часто выполняСмых дСйствий.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ

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

pwd ; whoami

На самом Π΄Π΅Π»Π΅, Ссли Π²Ρ‹ ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ это Π² своём Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅, ваш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ bash-скрипт, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ задСйствованы Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΡƒΠΆΠ΅ написан. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ½ Ρ‚Π°ΠΊ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° pwd Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран свСдСния ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, ΠΏΠΎΡ‚ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π° whoamiΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ вошли Π² систСму.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ²ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΠΎΠ΄Π½ΠΎΠΉ строкС, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ β€” лишь Π² максимальном количСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

getconf ARG_MAX

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

Как устроСны bash-скрипты

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ пустой Ρ„Π°ΠΉΠ» с использованиСм ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ touch. Π’ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΡƒΡŽ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΌΡ‹ собираСмся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Нас интСрСсуСт bash, поэтому пСрвая строка Ρ„Π°ΠΉΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ:

#!/bin/bash

Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… строках этого Ρ„Π°ΠΉΠ»Π° символ Ρ€Π΅ΡˆΡ‘Ρ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обозначСния ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚. Однако, пСрвая строка β€” это особый случай, здСсь Ρ€Π΅ΡˆΡ‘Ρ‚ΠΊΠ°, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт Π²ΠΎΡΠΊΠ»ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π·Π½Π°ΠΊ (эту ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ шСбанг) ΠΈ ΠΏΡƒΡ‚ΡŒ ΠΊ bash, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ систСмС Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сцСнарий создан ΠΈΠΌΠ΅Π½Π½ΠΎ для bash.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΎΡ‚Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π·Π½Π°ΠΊΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ Π·Π½Π°ΠΊΠΎΠΌ Ρ€Π΅ΡˆΡ‘Ρ‚ΠΊΠΈ. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это выглядит:

#!/bin/bash
# This is a comment
pwd
whoami

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

Установка Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для Ρ„Π°ΠΉΠ»Π° сцСнария

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ», Π΄Π°Π² Π΅ΠΌΡƒ имя myscript, ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ созданию bash-скрипта ΠΏΠΎΡ‡Ρ‚ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°. БСйчас ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ лишь ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ» исполняСмым, ΠΈΠ½Π°Ρ‡Π΅, ΠΏΠΎΠΏΡ‹Ρ‚Π°Π²ΡˆΠΈΡΡŒ Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Ρ‘Ρ‚Π΅ΡΡŒ с ошибкой Permission denied.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° запуска Ρ„Π°ΠΉΠ»Π° сцСнария с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ настроСнными Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ

Π‘Π΄Π΅Π»Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» исполняСмым:

chmod +x ./myscript

Π’Π΅ΠΏΠ΅Ρ€ΡŒ попытаСмся Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ:

./myscript

ПослС настройки Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ запуск bash-скрипта

Π’Ρ‹Π²ΠΎΠ΄ сообщСний

Для Π²Ρ‹Π²ΠΎΠ΄Π° тСкста Π² консоль Linux примСняСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° echo. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π·Π½Π°Π½ΠΈΠ΅ΠΌ этого Ρ„Π°ΠΊΡ‚Π° ΠΈ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ наш скрипт, Π΄ΠΎΠ±Π°Π²ΠΈΠ² пояснСния ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ выводят ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Π² Π½Ρ‘ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

#!/bin/bash
# our comment is here
echo "The current directory is:"
pwd
echo "The user logged in is:"
whoami

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ получится послС запуска ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ скрипта.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
Π’Ρ‹Π²ΠΎΠ΄ сообщСний ΠΈΠ· скрипта

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΡΡΠ½ΡΡŽΡ‰ΠΈΠ΅ надписи, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ echo. Если Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ», ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ срСдствами Linux, ΠΈΠ»ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅ Π½Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΈΡΡŒ с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ echo, взглянитС Π½Π° этот ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π».

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

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ сцСнария ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ для использования ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ.

НСт Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎ Π² исполнСнии ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ Π±Π΅Π· хранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½ΠΎ возмоТности Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° вСсьма ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² bash-скриптах:

  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды

Иногда Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½Π΅ΠΊΠΈΠΌΠΈ систСмными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π’ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ вывСсти домашнюю Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

#!/bin/bash
# display user home
echo "Home for the current user is: $HOME"

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ $HOME Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…, это Π½Π΅ ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚ систСмС Π΅Ρ‘ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ получится, Ссли Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ сцСнарий.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
ИспользованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ срСды Π² сцСнарии

А Ρ‡Ρ‚ΠΎ Ссли Π½Π°Π΄ΠΎ вывСсти Π½Π° экран Π·Π½Π°Ρ‡ΠΎΠΊ Π΄ΠΎΠ»Π»Π°Ρ€Π°? ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ‚Π°ΠΊ:

echo "I have $1 in my pocket"

БистСма ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ Π·Π½Π°ΠΊ Π΄ΠΎΠ»Π»Π°Ρ€Π° Π² строкС, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ, ΠΈ Ρ€Π΅ΡˆΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сослались Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. Π‘ΠΊΡ€ΠΈΠΏΡ‚ попытаСтся вывСсти Π½Π° экран Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $1. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ?

Π’ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ситуации ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ использованиС ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ символа, ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ косой Ρ‡Π΅Ρ€Ρ‚Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄ Π·Π½Π°ΠΊΠΎΠΌ Π΄ΠΎΠ»Π»Π°Ρ€Π°:

echo "I have $1 in my pocket"

Π’Π΅ΠΏΠ΅Ρ€ΡŒ сцСнарий Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ оТидаСтся.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
ИспользованиС ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π½Π°ΠΊΠ° Π΄ΠΎΠ»Π»Π°Ρ€Π°

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ срСды, bash-скрипты ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² сцСнарии собствСнныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ хранят Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ сцСнария.

Как ΠΈ Π² случаС с систСмными ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π·Π½Π°ΠΊ Π΄ΠΎΠ»Π»Π°Ρ€Π°:
TNW-CUS-FMP β€” ΠΏΡ€ΠΎΠΌΠΎ-ΠΊΠΎΠ΄ Π½Π° 10% скидку Π½Π° наши услуги, доступСн для Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 7 Π΄Π½Π΅ΠΉ

#!/bin/bash
# testing variables
grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ получится послС запуска Ρ‚Π°ΠΊΠΎΠ³ΠΎ сцСнария.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² сцСнарии

ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄

Одна ΠΈΠ· самых ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… возмоТностСй bash-скриптов β€” это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ сцСнария.

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ двумя способами.

  • Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π·Π½Π°Ρ‡ΠΊΠ° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ апострофа Β«`Β»
  • Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции $()

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, прослСдитС Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вмСсто ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ апострофа Π½Π΅ ввСсти ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΡƒΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ. ΠšΠΎΠΌΠ°Π½Π΄Ρƒ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Π΄Π²Π° Ρ‚Π°ΠΊΠΈΡ… Π·Π½Π°Ρ‡ΠΊΠ°:

mydir=`pwd`

ΠŸΡ€ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Ρ‚ΠΎ ΠΆΠ΅ самоС Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊ:

mydir=$(pwd)

А скрипт, Π² ΠΈΡ‚ΠΎΠ³Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

#!/bin/bash
mydir=$(pwd)
echo $mydir

Π’ Ρ…ΠΎΠ΄Π΅ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ pwdΠ±ΡƒΠ΄Π΅Ρ‚ сохранён Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ mydir, содСрТимоС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ echo, ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ Π² консоль.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
Π‘ΠΊΡ€ΠΈΠΏΡ‚, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Для выполнСния матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»Π΅ скрипта ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π²ΠΈΠ΄Π° $((a+b)):

#!/bin/bash
var1=$(( 5 + 5 ))
echo $var1
var2=$(( $var1 * 2 ))
echo $var2

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² сцСнарии

Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ конструкция if-then

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сцСнариях трСбуСтся ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ исполнСния ΠΊΠΎΠΌΠ°Π½Π΄. НапримСр, Ссли Π½Π΅ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ большС пяти, Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ дСйствиС, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС β€” Π΄Ρ€ΡƒΠ³ΠΎΠ΅. ПодобноС ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Π² ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΡ… ситуациях, ΠΈ здСсь Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ конструкция if-then. Π’ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ простом Π²ΠΈΠ΄Π΅ ΠΎΠ½Π° выглядит Ρ‚Π°ΠΊ:

if ΠΊΠΎΠΌΠ°Π½Π΄Π°
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
fi

А Π²ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

#!/bin/bash
if pwd
then
echo "It works"
fi

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС, Ссли Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ pwdΠ·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π² консоль Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ тСкст Β«it worksΒ».

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈΡΡ Ρƒ нас знаниями ΠΈ напишСм Π±ΠΎΠ»Π΅Π΅ слоТный сцСнарий. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Π½Π°Π΄ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² /etc/passwd, ΠΈ Ссли Π½Π°ΠΉΡ‚ΠΈ Π΅Π³ΠΎ ΡƒΠ΄Π°Π»ΠΎΡΡŒ, ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ сущСствуСт.

#!/bin/bash
user=likegeeks
if grep $user /etc/passwd
then
echo "The user $user Exists"
fi

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ получаСтся послС запуска этого скрипта.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
Поиск ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ воспользовались ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ grepдля поиска ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Ρ„Π°ΠΉΠ»Π΅ /etc/passwd. Если ΠΊΠΎΠΌΠ°Π½Π΄Π° grepΠ²Π°ΠΌ Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΠ°, Π΅Ρ‘ описаниС ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΉΠ΄Π΅Π½, скрипт Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС. А Ссли Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ? Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС скрипт просто Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π°ΠΌ Π½Π΅ сообщив. Π₯ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ сказал Π½Π°ΠΌ ΠΈ ΠΎΠ± этом, поэтому ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΡƒΠ΅ΠΌ ΠΊΠΎΠ΄.

Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ конструкция if-then-else

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° смогла ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΈ ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ поиска, ΠΈ ΠΎ Π½Π΅ΡƒΠ΄Π°Ρ‡Π΅, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ конструкциСй if-then-else. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΎΠ½Π° устроСна:

if ΠΊΠΎΠΌΠ°Π½Π΄Π°
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
else
ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
fi

Если пСрвая ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ ноль, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π΅Ρ‘ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, условиС окаТСтся истинным ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΏΠΎ Π²Π΅Ρ‚ΠΊΠ΅ else. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Ссли Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰Π΅Π΅ΡΡ ΠΎΡ‚ нуля, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ, ΠΈΠ»ΠΈ Π»ΠΎΠΆΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, располоТСнныС послС else.

НапишСм Ρ‚Π°ΠΊΠΎΠΉ скрипт:

#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
else
echo "The user $user doesn’t exist"
fi

Π•Π³ΠΎ исполнСниС пошло ΠΏΠΎ Π²Π΅Ρ‚ΠΊΠ΅ else.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
Запуск скрипта с конструкциСй if-then-else

Ну Ρ‡Ρ‚ΠΎ ΠΆΠ΅, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ дальшС ΠΈ зададимся вопросом ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТных условиях. Π§Ρ‚ΠΎ Ссли Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π΅ ΠΎΠ΄Π½ΠΎ условиС, Π° нСсколько? НапримСр, Ссли Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΉΠ΄Π΅Π½, Π½Π°Π΄ΠΎ вывСсти ΠΎΠ΄Π½ΠΎ сообщСниС, Ссли выполняСтся Π΅Ρ‰Ρ‘ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ условиС β€” Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ сообщСниС, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ситуации Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ условия. Выглядит это Ρ‚Π°ΠΊ:

if ΠΊΠΎΠΌΠ°Π½Π΄Π°1
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
elif ΠΊΠΎΠΌΠ°Π½Π΄Π°2
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
fi

Если пСрвая ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Π΅Ρ€Π½Ρ‘Ρ‚ ноль, Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Π΅Ρ‘ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ, выполнятся ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ then, ΠΈΠ½Π°Ρ‡Π΅, Ссли ΠΏΠ΅Ρ€Π²ΠΎΠ΅ условиС окаТСтся Π»ΠΎΠΆΠ½Ρ‹ΠΌ, ΠΈ Ссли вторая ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Π΅Ρ€Π½Ρ‘Ρ‚ ноль, выполнится Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°.

#!/bin/bash
user=anotherUser
if grep $user /etc/passwd
then
echo "The user $user Exists"
elif ls /home
then
echo "The user doesn’t exist but anyway there is a directory under /home"
fi

Π’ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ скриптС ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ useradd, Ссли поиск Π½Π΅ Π΄Π°Π» Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΈΠ»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ чисСл

Π’ скриптах ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ числовыС значСния. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ список ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄.

n1 -eq n2Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истинноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ссли n1 Ρ€Π°Π²Π½ΠΎ n2.
n1 -ge n2 Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истинноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ссли n1большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ n2.
n1 -gt n2Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истинноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ссли n1 большС n2.
n1 -le n2Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истинноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ссли n1мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ n2.
n1 -lt n2Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истинноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ссли n1 мСньшС n2.
n1 -ne n2Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истинноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ссли n1Π½Π΅ Ρ€Π°Π²Π½ΠΎ n2.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² сравнСния. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки.

#!/bin/bash
val1=6
if [ $val1 -gt 5 ]
then
echo "The test value $val1 is greater than 5"
else
echo "The test value $val1 is not greater than 5"
fi

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ эта ΠΊΠΎΠΌΠ°Π½Π΄Π°.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ чисСл Π² скриптах

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ val1большС Ρ‡Π΅ΠΌ 5, Π² ΠΈΡ‚ΠΎΠ³Π΅ выполняСтся Π²Π΅Ρ‚Π²ΡŒ thenΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° сравнСния ΠΈ Π² консоль выводится ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ строк

Π’ сцСнариях ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ строковыС значСния. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сравнСния выглядят довольно просто, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сравнСния строк Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ особСнности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ коснёмся Π½ΠΈΠΆΠ΅. Π’ΠΎΡ‚ список ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

str1 = str2 ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ строки Π½Π° равСнство, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истину, Ссли строки ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹.
str1 != str2Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истину, Ссли строки Π½Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹.
str1 < str2Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истину, Ссли str1мСньшС, Ρ‡Π΅ΠΌ str2.
str1 > str2 Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истину, Ссли str1большС, Ρ‡Π΅ΠΌ str2.
-n str1 Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истину, Ссли Π΄Π»ΠΈΠ½Π° str1большС нуля.
-z str1Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истину, Ссли Π΄Π»ΠΈΠ½Π° str1Ρ€Π°Π²Π½Π° Π½ΡƒΠ»ΡŽ.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сравнСния строк Π² сцСнарии:

#!/bin/bash
user ="likegeeks"
if [$user = $USER]
then
echo "The user $user Β is the current logged in user"
fi

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния скрипта ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ строк Π² скриптах

Π’ΠΎΡ‚ ΠΎΠ΄Π½Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ сравнСния строк, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ. А ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Β«>Β» ΠΈ Β«<Β» Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ косой Ρ‡Π΅Ρ€Ρ‚Ρ‹, ΠΈΠ½Π°Ρ‡Π΅ скрипт Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, хотя сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ Π½Π΅ появится. Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π½Π°ΠΊ Β«>Β» ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ пСрСнаправлСния Π²Ρ‹Π²ΠΎΠ΄Π°.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π° с этими ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ выглядит Π² ΠΊΠΎΠ΄Π΅:

#!/bin/bash
val1=text
val2="another text"
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Π’ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ строк, Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ скрипт, хотя ΠΈ выполняСтся, Π²Ρ‹Π΄Π°Ρ‘Ρ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅:

./myscript: line 5: [: too many arguments

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ этого прСдупрСТдСния, Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΠΌ $val2 Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ:

#!/bin/bash
val1=text
val2="another text"
if [ $val1 > "$val2" ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ строк

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Β«>Β» ΠΈ Β«<Β» Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с символами Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΠΈ Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрах. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ эту ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ тСкстовый Ρ„Π°ΠΉΠ» с Ρ‚Π°ΠΊΠΈΠΌ содСрТимым:

Likegeeks
likegeeks

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΠΌ Π΅Π³ΠΎ, Π΄Π°Π² имя myfile, послС Ρ‡Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

sort myfile

Она отсортируСт строки ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Ρ‚Π°ΠΊ:

likegeeks
Likegeeks

Команда sort, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, сортируСт строки ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ строчная Π±ΡƒΠΊΠ²Π° Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ мСньшС прописной. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ строки:

#!/bin/bash
val1=Likegeeks
val2=likegeeks
if [ $val1 > $val2 ]
then
echo "$val1 is greater than $val2"
else
echo "$val1 is less than $val2"
fi

Если Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, окаТСтся, Ρ‡Ρ‚ΠΎ всё Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ β€” строчная Π±ΡƒΠΊΠ²Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ большС прописной.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
Команда sort ΠΈ сравнСниС строк Π² Ρ„Π°ΠΉΠ»Π΅ сцСнария

Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… сравнСния прописныС Π±ΡƒΠΊΠ²Ρ‹ мСньшС строчных. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ строк здСсь выполняСтся ΠΏΡƒΡ‚Ρ‘ΠΌ сравнСния ASCII-ΠΊΠΎΠ΄ΠΎΠ² символов, порядок сортировки, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, зависит ΠΎΡ‚ ΠΊΠΎΠ΄ΠΎΠ² символов.

Команда sort, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ порядок сортировки, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π² настройках систСмного языка.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉ, Π½ΠΈΠΆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² bash-скриптах Ρ‡Π°Ρ‰Π΅ всСго. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ условия, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ΠΎΡ‚ список этих ΠΊΠΎΠΌΠ°Π½Π΄.

-d fileΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, сущСствуСт Π»ΠΈ Ρ„Π°ΠΉΠ», ΠΈ являСтся Π»ΠΈ ΠΎΠ½ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ΅ΠΉ.
-e fileΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, сущСствуСт Π»ΠΈ Ρ„Π°ΠΉΠ».
-f file ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, сущСствуСт Π»ΠΈ Ρ„Π°ΠΉΠ», ΠΈ являСтся Π»ΠΈ ΠΎΠ½ Ρ„Π°ΠΉΠ»ΠΎΠΌ.
-r fileΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, сущСствуСт Π»ΠΈ Ρ„Π°ΠΉΠ», ΠΈ доступСн Π»ΠΈ ΠΎΠ½ для чтСния.
-s file ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, сущСствуСт Π»ΠΈ Ρ„Π°ΠΉΠ», ΠΈ Π½Π΅ являСтся Π»ΠΈ ΠΎΠ½ пустым.
-w fileΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, сущСствуСт Π»ΠΈ Ρ„Π°ΠΉΠ», ΠΈ доступСн Π»ΠΈ ΠΎΠ½ для записи.
-x fileΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, сущСствуСт Π»ΠΈ Ρ„Π°ΠΉΠ», ΠΈ являСтся Π»ΠΈ ΠΎΠ½ исполняСмым.
file1 -nt file2 ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, Π½ΠΎΠ²Π΅Π΅ Π»ΠΈ file1, Ρ‡Π΅ΠΌ file2.
file1 -ot file2ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, ΡΡ‚Π°Ρ€ΡˆΠ΅ Π»ΠΈ file1, Ρ‡Π΅ΠΌ file2.
-O file ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, сущСствуСт Π»ΠΈ Ρ„Π°ΠΉΠ», ΠΈ являСтся Π»ΠΈ Π΅Π³ΠΎ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ.
-G fileΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, сущСствуСт Π»ΠΈ Ρ„Π°ΠΉΠ», ΠΈ соотвСтствуСт Π»ΠΈ Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠ°ΠΊ Π²ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ рассмотрСнныС сСгодня, нСслоТно Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ. Π˜Ρ… ΠΈΠΌΠ΅Π½Π°, являясь сокращСниями ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… слов, прямо ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° выполняСмыС ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

ΠžΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅:

#!/bin/bash
mydir=/home/likegeeks
if [ -d $mydir ]
then
echo "The $mydir directory exists"
cd $ mydir
ls
else
echo "The $mydir directory does not exist"
fi

Π­Ρ‚ΠΎΡ‚ скрипт, для ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π΅Ρ‘ содСрТимоС.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ
Π’Ρ‹Π²ΠΎΠ΄ содСрТимого Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ

ПолагаСм, с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Π²Ρ‹ смоТСтС ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, всС ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ.

Π˜Ρ‚ΠΎΠ³ΠΈ

БСгодня ΠΌΡ‹ рассказали ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ написанию bash-скриптов ΠΈ рассмотрСли Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ. На самом Π΄Π΅Π»Π΅, Ρ‚Π΅ΠΌΠ° bash-программирования ΠΎΠ³Ρ€ΠΎΠΌΠ½Π°. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ являСтся ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части большой сСрии ΠΈΠ· 11 ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ². Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ продолТСния прямо сСйчас β€” Π²ΠΎΡ‚ список ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΠΎΠ² этих ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ². Для удобства сюда Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΈ Ρ‚ΠΎΡ‚, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‡Π»ΠΈ.

  1. Bash Script Step By Step β€” здСсь Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ созданиС bash-скриптов, рассмотрСно использованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, описаны условныС конструкции, вычислСния, сравнСния чисСл, строк, выяснСниС свСдСний ΠΎ Ρ„Π°ΠΉΠ»Π°Ρ….
  2. Bash Scripting Part 2, Bash the awesome β€” Ρ‚ΡƒΡ‚ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ особСнности Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ for ΠΈ while.
  3. Bash Scripting Part 3, Parameters & options β€” этот ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» посвящён ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ скриптам, Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ².
  4. Bash Scripting Part 4, Input & Output β€” здСсь Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ дСскрипторах Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½ΠΈΠΌΠΈ, ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ… Π²Π²ΠΎΠ΄Π°, Π²Ρ‹Π²ΠΎΠ΄Π°, ошибок, ΠΎ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°.
  5. Bash Scripting Part 5, Sighals & Jobs β€” этот ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» посвящён сигналам Linux, ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π² скриптах, запуску сцСнариСв ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ.
  6. Bash Scripting Part 6, Functions β€” Ρ‚ΡƒΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ создании ΠΈ использовании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² скриптах, ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.
  7. Bash Scripting Part 7, Using sed β€” эта ΡΡ‚Π°Ρ‚ΡŒΡ посвящСна Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΌ тСкстовым Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ sed.
  8. Bash Scripting Part 8, Using awk β€” Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» посвящён ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π° языкС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… awk.
  9. Bash Scripting Part 9, Regular Expressions β€” Ρ‚ΡƒΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ± использовании рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² bash-скриптах.
  10. Bash Scripting Part 10, Practical Examples β€” здСсь ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΈΡ‘ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сообщСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° диска.
  11. Bash Scripting Part 11, Expect Command β€” этот ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» посвящён срСдству Expect, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ взаимодСйствиС с ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ. Π’ частности, здСсь ΠΈΠ΄Ρ‘Ρ‚ Ρ€Π΅Ρ‡ΡŒ ΠΎΠ± expect-скриптах ΠΈ ΠΎΠ± ΠΈΡ… взаимодСйствии с bash-скриптами ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ.

ПолагаСм, ΠΎΠ΄Π½ΠΎ ΠΈΠ· Ρ†Π΅Π½Π½Ρ‹Ρ… свойств этой сСрии статСй Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π°, Π½Π°Ρ‡ΠΈΠ½Π°ΡΡΡŒ с самого простого, подходящСго для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ любого уровня, постСпСнно Π²Π΅Π΄Ρ‘Ρ‚ ΠΊ довольно ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹ΠΌ Ρ‚Π΅ΠΌΠ°ΠΌ, давая шанс всСм ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒΡΡ Π² Π΄Π΅Π»Π΅ создания сцСнариСв ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Linux.

Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ! ΠŸΡ€ΠΎΡΠΈΠΌ Π³ΡƒΡ€Ρƒ bash-программирования Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π΄ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ Π΄ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½ мастСрства, ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ сСкрСтами, Π° ΠΎΡ‚ Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ написал свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ скрипт, ΠΆΠ΄Ρ‘ΠΌ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠΉ.

Bash-скрипты: Π½Π°Ρ‡Π°Π»ΠΎ

Волько зарСгистрированныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² опросС. Π’ΠΎΠΉΠ΄ΠΈΡ‚Π΅, поТалуйста.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ части Ρ†ΠΈΠΊΠ»Π° статСй?

  • Π”Π°!

  • НСт, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ

ΠŸΡ€ΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π»ΠΈ 1030 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’ΠΎΠ·Π΄Π΅Ρ€ΠΆΠ°Π»ΠΈΡΡŒ 106 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com