15%

БпСстСтС 15% ΠΎΡ‚ всички услуги Π·Π° хостинг

ВСствайтС умСнията си ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Ρ‚Π΅ ΠΎΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° всСки хостинг ΠΏΠ»Π°Π½

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄:

Skills
Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ
18.12.2024

ПисанС Π½Π° скриптовС Π² Linux Bash

Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π΅Ρ‚Π΅ Bash са ΠΌΠΎΡ‰Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈ, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° систСмни ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° слоТни ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Linux. Π§Ρ€Π΅Π· писанСто Π½Π° Bash скриптовС ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ мноТСство ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π² Π΅Π΄ΠΈΠ½ скрипт, ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ спСстяват Π²Ρ€Π΅ΠΌΠ΅ ΠΈ намаляват броя Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅. Bash Π΅ ΡˆΠ΅Π»ΡŠΡ‚ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π² ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ дистрибуции Π½Π° Linux, ΠΊΠΎΠ΅Ρ‚ΠΎ Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ основСн инструмСнт Π·Π° администраторитС, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΈ СнтусиаститС Π½Π° Linux.

Π’ Ρ‚Π°Π·ΠΈ статия Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ сС ΠΏΠΈΡˆΠ°Ρ‚ ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Bash скриптовС Π² Linux, ΠΊΠ°Ρ‚ΠΎ Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ основитС, ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΈ практичСскитС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ.


Какво Π΅ Bash скрипт?

Π‘ΠΊΡ€ΠΈΠΏΡ‚ΡŠΡ‚ Π½Π° Bash Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ тСкстов Ρ„Π°ΠΉΠ», ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†Π° ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ изпълнСни ΠΎΡ‚ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°Ρ‚Π° Bash. Π’ΠΎΠΉ позволява Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π΄Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Ρ‚ повтарящи сС Π·Π°Π΄Π°Ρ‡ΠΈ, Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ ΠΈ Π΄Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Ρ‚ ΠΏΠΎ-слоТни послСдоватСлности ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° взаимодСйстват с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма Linux.

Bash скриптовСтС ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΊΠ°Ρ‚ΠΎ:

  • ΠœΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ†ΠΈΡ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ (ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅, прСмСстванС, ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½Π΅)
  • БистСмно администриранС (наблюдСниС Π½Π° процСси, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ)
  • АвтоматизиранС Π½Π° инсталиранСто Π½Π° софтуСр
  • ИзпълнСниС Π½Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΈ копия ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ

Как Π΄Π° напишСм прост Bash скрипт

1. БъздаванС Π½Π° Ρ„Π°ΠΉΠ» със скрипт Π½Π° Bash

Π—Π° Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Bash скрипт, трябва Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Π½ΠΎΠ² тСкстов Ρ„Π°ΠΉΠ». Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ тСкстов Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠ°Ρ‚ΠΎ nano, vim ΠΈΠ»ΠΈ gedit, Π·Π° Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ скриптов Ρ„Π°ΠΉΠ» с Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ .sh (Π½Π°ΠΏΡ€. myscript.sh).

nano myscript.sh

2. ДобавянС Π½Π° Shebang (#!)

ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Ρ€Π΅Π΄ Π½Π° Bash скрипта сС Π½Π°Ρ€ΠΈΡ‡Π° shebang, ΠΊΠΎΠΉΡ‚ΠΎ ΡƒΠΊΠ°Π·Π²Π° Π½Π° систСмата ΠΊΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° изпълнСниС Π½Π° скрипта. Π—Π° Bash скриптовСтС Ρ€Π΅Π΄ΡŠΡ‚ shebang ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½:

#!/bin/bash

Π’ΠΎΠ²Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ ΡΠΊΡ€ΠΈΠΏΡ‚ΡŠΡ‚ Ρ‰Π΅ бъдС изпълнСн с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°Ρ‚Π° Bash, Π΄ΠΎΡ€ΠΈ Π°ΠΊΠΎ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π·Π° потрСбитСля Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π° Π΄Ρ€ΡƒΠ³Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°.

3. ЗаписванС Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π² скрипта

Π‘Π»Π΅Π΄ shebang ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ искатС ΡΠΊΡ€ΠΈΠΏΡ‚ΡŠΡ‚ Π΄Π° изпълни. НапримСр:

#Π’ΠΎΠ²Π° Π΅ прост скрипт Π·Π° поздравяванС Π½Π° потрСбитСля echo “Hello, $USER!” echo “Today is $(date)” echo “Your current directory is $(pwd)”
  • echo: ΠžΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚Π²Π° тСкст Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°.
  • $USER: БистСмна ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°, която ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Ρ‚Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ потрСбитСлско ΠΈΠΌΠ΅.
  • $(date): Изпълнява ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° date, която ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚Π²Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° Π΄Π°Ρ‚Π° ΠΈ час.
  • $(pwd): ΠžΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚Π²Π° настоящата Ρ€Π°Π±ΠΎΡ‚Π½Π° дирСктория.

4. НаправСтС скрипта изпълним

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° стартиратС скрипта, трябва Π΄Π° ΠΌΡƒ Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΡ€Π°Π²Π° Π·Π° изпълнСниС. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° chmod, Π·Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ скрипта изпълним:

chmod x myscript.sh

5. ИзпълнСниС Π½Π° скрипта

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΡΠΊΡ€ΠΈΠΏΡ‚ΡŠΡ‚ Π΅ изпълним, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ стартиратС ΠΎΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

./myscript.sh

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΡΠΊΡ€ΠΈΠΏΡ‚ΡŠΡ‚ Ρ‰Π΅ изпълни ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅ Π² Π½Π΅Π³ΠΎ ΠΈ Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΠΈΠ·Ρ…ΠΎΠ΄Π° Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°.


ΠŸΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² скриптовСтС Π½Π° Bash

Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Bash Π²ΠΈ позволяват Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π·Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ. ΠŸΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅ Π½Π° информация, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠ·ΠΎΠ²Π΅, числа ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ:

#!/bin/bash # Π”Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ name=”John” age=25 # ИзползванС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² скрипт echo “Hello, my name is $name.” echo “I am $age years old.”
  • ΠŸΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ сС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚ Π±Π΅Π· ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ ΠΎΠΊΠΎΠ»ΠΎ Π·Π½Π°ΠΊΠ° =.
  • Π—Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ стойността Π½Π° Π΄Π°Π΄Π΅Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°, Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ към нСя символа $ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ $ΠΈΠΌΠ΅).

Условни изрСчСния Π² Bash

Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Bash ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ условни ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΈ позволяват Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ въз основа Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ условия.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° изявлСниС If:

#!/bin/bash # ΠŸΠΎΠΏΠΈΡ‚Π°ΠΉΡ‚Π΅ Π·Π° въвСТданС Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ потрСбитСля echo “Π’ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ число ΠΌΠ΅ΠΆΠ΄Ρƒ 1 ΠΈ 10:” read number # ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ числото Π΅ Π² ΠΎΠ±Ρ…Π²Π°Ρ‚Π° if [ $number -ge 1 ] && [ $number -le 10 ]; then echo “Числото Π΅ Π² ΠΎΠ±Ρ…Π²Π°Ρ‚Π°.” else echo “Числото Π΅ извън ΠΎΠ±Ρ…Π²Π°Ρ‚Π°.” fi
  • ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅: Π§Π΅Ρ‚Π΅ Π²Ρ…ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ потрСбитСля ΠΈ Π³ΠΈ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°.
  • if: Π—Π°ΠΏΠΎΡ‡Π²Π° условното Ρ‚Π²ΡŠΡ€Π΄Π΅Π½ΠΈΠ΅.
  • [ ]: Използва сС Π·Π° тСстванС Π½Π° условия (Π½Π°ΠΏΡ€. сравнСния).
  • -ge: По-голямо ΠΎΡ‚ ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ Π½Π°.
  • -le: По-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ Π½Π°.
  • &&: ЛогичСски ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ AND.

Π¦ΠΈΠΊΠ»ΠΈ Π² Bash скриптовС

Π¦ΠΈΠΊΠ»ΠΈΡ‚Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ повтарянС Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π° Bash ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΊΠ°ΠΊΡ‚ΠΎ for, Ρ‚Π°ΠΊΠ° ΠΈ while Ρ†ΠΈΠΊΠ»ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ†ΠΈΠΊΡŠΠ» For:

#!/bin/bash # Цикъл ΠΏΡ€Π΅Π· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ числа for i in {1..5}; do echo “Iteration $i” done

Π’ΠΎΠ·ΠΈ Ρ†ΠΈΠΊΡŠΠ» ΠΈΠ·Π²Π΅ΠΆΠ΄Π° тСкста “Iteration”, послСдван ΠΎΡ‚ числата ΠΎΡ‚ 1 Π΄ΠΎ 5.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ†ΠΈΠΊΡŠΠ» While:

#!/bin/bash # Π˜Π½ΠΈΡ†ΠΈΠΈΡ€Π°Π½Π΅ Π½Π° брояч counter=1 # Цикъл, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π±Ρ€ΠΎΡΡ‡ΡŠΡ‚ Π΅ ΠΏΠΎ-малък ΠΈΠ»ΠΈ Ρ€Π°Π²Π΅Π½ Π½Π° 5 while [ $counter -le 5 ]; do echo “Counter: $counter” counter=$((counter 1)) # Π£Π²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° брояча done

Π’ΠΎΠ·ΠΈ Ρ†ΠΈΠΊΡŠΠ» Ρ‰Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° ΠΈ ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚Π²Π° стойността Π½Π° брояча, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ тя достигнС 5.


Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Bash скриптовС

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Bash скриптовС, Π·Π° Π΄Π° Π³Ρ€ΡƒΠΏΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π² скрипта.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° функция:

#!/bin/bash # Π”Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΠΉΡ‚Π΅ функция Π·Π° ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ·Π΄Ρ€Π°Π² greet_user() { echo “Hello, $1!” } # Π˜Π·Π²ΠΈΠΊΠ°ΠΉΡ‚Π΅ функцията с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ greet_user “Alice”
  • greet_user: Π˜ΠΌΠ΅Ρ‚ΠΎ Π½Π° функцията.
  • $1: ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ²Π° ΠΏΡŠΡ€Π²ΠΈΡΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΠΏΠΎΠ΄Π°Π΄Π΅Π½ Π½Π° функцията.

Π Π°Π±ΠΎΡ‚Π° с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ ΠΎΡ‚ командния Ρ€Π΅Π΄

Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Bash ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ ΠΎΡ‚ командния Ρ€Π΅Π΄, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚. Π’Π΅Π·ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² спСциални ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ: $1, $2, $3 ΠΈ Ρ‚.Π½.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° скрипт с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ:

#!/bin/bash # ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ са прСдоставСни Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° if [ $# -ne 2 ]; then echo “Usage: $0 ” exit 1 fi # Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ echo “Argument 1: $1” echo “Argument 2: $2”
  • $#: Броят Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅, ΠΏΠΎΠ΄Π°Π΄Π΅Π½ΠΈ Π½Π° скрипта.
  • $0: Π˜ΠΌΠ΅Ρ‚ΠΎ Π½Π° скрипта.
  • $1, $2: ΠŸΡŠΡ€Π²ΠΈΡΡ‚ ΠΈ вторият Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΠΏΠΎΠ΄Π°Π΄Π΅Π½ΠΈ Π½Π° скрипта.

ΠžΡ‚ΡΡ‚Ρ€Π°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² Bash скриптовС

Π—Π° Π΄Π° Π΄Π΅Π±ΡŠΠ³Π²Π°Ρ‚Π΅ Bash скрипт, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ опцията -x ΠΏΡ€ΠΈ стартиранСто Π½Π° скрипта. Π’ΠΎΠ²Π° Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ всяка ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π½Π΅ΠΉΠ½ΠΎΡ‚ΠΎ изпълнСниС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

bash -x myscript.sh

Π’ΠΎΠ²Π° Ρ‰Π΅ ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚Π° всяка ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π΅Π΄Π½ΠΎ с нСйния ΠΈΠ·Ρ…ΠΎΠ΄, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ Π² скрипта.


Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΠΈΡΠ°Π½Π΅Ρ‚ΠΎ Π½Π° Bash скриптовС Π² Linux Π²ΠΈ позволява Π΄Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ повтарящи сС Π·Π°Π΄Π°Ρ‡ΠΈ, Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° систСмата ΠΈ Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ слоТни Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ процСси. ΠšΠ°Ρ‚ΠΎ ΠΎΠ²Π»Π°Π΄Π΅Π΅Ρ‚Π΅ писанСто Π½Π° Bash скриптовС, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚Π΅ производитСлността си ΠΈ Π΄Π° пСрсонализиратС срСдата си Π² Linux спорСд Π½ΡƒΠΆΠ΄ΠΈΡ‚Π΅ си. НСзависимо Π΄Π°Π»ΠΈ Ρ‚Π΅ΠΏΡŠΡ€Π²Π° Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚Π΅ ΠΈΠ»ΠΈ искатС Π΄Π° Ρ€Π°Π·ΡˆΠΈΡ€ΠΈΡ‚Π΅ умСнията си Π·Π° писанС Π½Π° скриптовС, писанСто Π½Π° скриптовС Bash Π΅ основСн инструмСнт Π·Π° всСки ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π½Π° Linux.

15%

БпСстСтС 15% ΠΎΡ‚ всички услуги Π·Π° хостинг

ВСствайтС умСнията си ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Ρ‚Π΅ ΠΎΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° всСки хостинг ΠΏΠ»Π°Π½

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄:

Skills
Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ