π© Bash: ΠΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ bash-ΡΠΊΡΠΈΠΏΡΡ?
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Shell.
ΠΡΡ ΡΠΈΠ»Π° GNU\Linux Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°. ΠΡΠΎ ΡΠ°ΠΊΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ°, Π³Π΄Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π±ΡΡΡΡΠΎ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
ΠΠ»Ρ GNU\Linux Π±ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΊΡΠΈΠΏΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ°Ρ . ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π²Ρ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ»ΡΠΊΠ°.
Shell β ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ
ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ
Π²ΠΌΠ΅ΡΡΠ΅ Ρ GNU\Linux. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° ΡΠ·ΡΠΊΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠΌ. Shell ΡΠΊΡΠΈΠΏΡΠ°ΠΌ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ *.sh
ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΠ½ΠΈ Π² GNU\Linux ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
.
Bash (Bourne-Again SHell) β ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π² GNU\Linux, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π΄Π°ΡΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
Bash-ΡΠΊΡΠΈΠΏΡΡ β ΡΡΠΎ ΡΠ°ΠΉΠ»Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° bash.
Bash-ΡΠΊΡΠΈΠΏΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ Π·Π°Π΄Π°Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΡΡΠ΅Ρ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π΅Π³ΠΎ ΠΏΠΎ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
Bash-ΡΠΊΡΠΈΠΏΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ°Π²Π° Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
Π Π½Π°ΡΠ°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΡΠΎΠΊΠ°, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΡΠ΅Π±Π°Π½Π³ (shebang), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ°. Π¨Π΅Π±Π°Π½Π³ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΡΠ΅ΡΠ΅ΡΠΊΠΈ #
ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ Π·Π° Π½ΠΈΠΌ ΡΠΈΠΌΠ²ΠΎΠ» Π²ΠΎΡΠΊΠ»ΠΈΡΠ°Π½ΠΈΡ !
, ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΡΡ
ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΡΡ ΠΊ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ.
ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° bash, ΡΠ΅Π±Π°Π½Π³ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
#!/bin/bash
Π’Π°ΠΊΠΆΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΡΠ΅ΡΠ΅ΡΠΊΠΈ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡΡΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ. ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΊΡΠΈΠΏΡΠ°.
# ΠΡΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠΎΠ³Π΄Π° Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅:
#!/usr/bin/sh
ΠΈΠ»ΠΈ
#!/user/bin/bash
ΠΡΠΎΡΡΠΎ ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° sh ΡΡΠ°ΡΡΠ΅, ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° bash.
Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° bash ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ sh, ΡΠΎ Π΅ΡΡΡ Π²ΡΠ΅, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ sh Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈ Π² bash. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ
GNU\Linux, ΡΡΡΠ»ΠΊΡ /bin/sh
ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΡΡΠ»ΠΊΡ Π½Π° /bin/bash
.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, bash ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ (Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠ΅, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ), ΡΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², Π° Π² /bin/sh
Π½Π΅Ρ ΠΈΡΡΠΎΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ Π΅ΡΠ΅ Π½Π΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π·Π°Π΄Π°Π½ΠΈΡ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠ΅ΠΊ Π΄Π»Ρ GNU\Linux, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΊΡΠΈΠΏΡΡ.
Π GNU\Linux ΠΏΠΎΡΡΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ΅ΠΆΠ΅Π½ΠΈΡ Π΅Π³ΠΎ ΡΠΈΠΏΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅. ΠΡΠΎ ΠΌΠΎΠ³ΡΡ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΈ ΡΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π°. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΈΠ³Π½Π°ΡΡΡΡ Π½Π°ΡΠ°Π»Π° ΡΠ°ΠΉΠ»Π° ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π°Π³ΠΈ.
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΡΠΈΡΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ Π°ΡΡΠΈΠ±ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΡΡΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΊΡΠΈΠΏΡΡ. ΠΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠ΅ΠΊΡΡ, Π½ΠΎ Π΅ΡΠ»ΠΈ Π΄Π»Ρ Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π°ΡΡΠΈΠ±ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΡΡΠΈ, ΡΠΎ Π΄Π»Ρ ΠΈΡ ΠΎΡΠΊΡΡΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° β ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ sh ΠΈΠ»ΠΈ bash, Π° ΡΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΡΠΈΡΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠΎΠΊΡ Π·Π° ΡΡΡΠΎΠΊΠΎΠΉ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅.
Π£ Π½Π°Ρ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π·Π°ΠΏΡΡΠΊ ΡΠΊΡΠΈΠΏΡΠ° GNU\Linux. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈΠ»ΠΈ ΠΆΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ ΠΈ ΡΠΎΠΎΠ±ΡΠΈΡΡ Π΅ΠΉ ΠΊΠ°ΠΊΠΎΠΉ ΡΠ°ΠΉΠ» Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΡΠ»Π°Π³Π° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΡΡΠΈ.
ΠΠ°ΠΊ Π·Π°ΠΏΡΡΡΠΈΡΡ sh ΡΠΊΡΠΈΠΏΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ?
ΠΠΎΠΏΡΡΡΠΈΠΌ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠΊΡΠΈΠΏΡ hello.sh
ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
# cd ~ # mcedit hello.sh
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅:
echo "Hello World"
Π§ΡΠΎΠ±Ρ Π΅Π³ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ, Π½Π°Π΄ΠΎ Π·Π°ΠΉΡΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π³Π΄Π΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ ΡΠΊΡΠΈΠΏΡ, Π½Π°Π±ΡΠ°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° sh
ΠΈ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΊΠ°Π·Π°ΡΡ Π²Π°Ρ ΡΠ°ΠΉΠ» hello.sh
.
# sh hello.sh
ΠΡΠ²Π΅Ρ:
Π£ΠΊΠ°Π·Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π²Π½ΡΡΡΠΈ ΡΠ°ΠΉΠ»Π°.
ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π²Π½ΡΡΡΠΈ ΡΠ°ΠΉΠ»Π°, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΊΡΠΈΠΏΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ.
ΠΠ° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΡΠΊΠ΅ ΠΏΠΎΡΠ»Π΅ #!
ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΏΡΡΡ ΠΊ bash-ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎ /usr/bin/bash
(ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ whereis bash
).
# whereis bash
ΠΡΠ²Π΅Ρ:
ΠΡΠΎΡΠ°Ρ ΡΡΡΠΎΠΊΠ° β ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΊΡΠΈΠΏΡ, Π½ΠΎ Π½Π°Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° β ΡΡΠΎ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ°, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ.
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ /usr/bin/bash
, Π½ΠΎ ΠΈ /bin/bash
ΠΈΠ»ΠΈ /bin/sh
, ΠΈ Π΄Π°ΠΆΠ΅ /usr/bin/python
ΠΈΠ»ΠΈ /usr/bin/php
. Π’Π°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΡΡΠΎ ΠΏΡΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΈΠ»ΠΈΡΡ env
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, /usr/bin/env
, php
ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
# cd ~ # mcedit script.sh
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΊΡΠΈΠΏΡΠ° script.sh
ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠΌ:
#!/usr/bin/bash
echo "Hello World"
Π‘Π΄Π΅Π»Π°ΡΡ Π½Π°Ρ ΡΠ°ΠΉΠ» ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ.
Π§ΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΊΡΠΈΠΏΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ.
ΠΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΎΠ·Π½Π°ΡΡ, ΡΡΠΎ Π² GNU\Linux Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠΉ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌ. Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ GNU\Linux β ΠΏΡΠΎΡΡΠΎ ΡΠ°ΡΡΡ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΠΎΡΠΊΠΈ, ΡΠΈΡΡΠ΅ΠΌΠ° Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΊ ΡΡΠΎΠΌΡ Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅Ρ. ΠΠΎΡΡΠΎΠΌΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π΅Π»Π°ΡΡ .sh
ΡΠ°ΠΉΠ»Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌΠΈ β ΡΡΠ°Π²ΠΈΡΡ Π½Π° Π½ΠΈΡ
ΡΠ»Π°Π³ executable
.
Π§ΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠΊΡΠΈΠΏΡ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅, Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΡΠ»Π°Π³ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΡΡΠΈ.
Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΉΠ» ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ chmod (ΠΎΡ Π°Π½Π³Π». change mode β ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ).
ΠΠΎΠΌΠ°Π½Π΄Π° chmod ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
# chmod [ΠΎΠΏΡΠΈΠΈ] ΠΏΡΠ°Π²Π°_Π΄ΠΎΡΡΡΠΏΠ° ΡΠ°ΠΉΠ»
- ΠΏΡΠ°Π²Π°_Π΄ΠΎΡΡΡΠΏΠ° β ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π΄Π°Π΅Ρ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Ρ ΠΈΠ»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ, Π° ΡΠ°ΠΉΠ» β ΡΡΠΎ ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ, ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΊΠΎΡΠΎΡΠΎΠΉ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΉΠ» ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ, Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ Π΅Π³ΠΎ ΠΏΡΠ°Π²Π°ΠΌ Π΄ΠΎΡΡΡΠΏΠ° Π±ΠΈΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ x
.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° chmod +x
ΠΈ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΡΠΊΡΠΈΠΏΡΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΡΡΡΠΈΠΌ ΠΎΡ ΡΡΠΏΠ΅ΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
$ sudo chmod +x script.sh
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° chmod +x
Π΄ΠΎΠ±Π°Π²ΠΈΡ ΠΏΡΠ°Π²Π° Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠ»ΠΈ Π²ΠΎΡ ΡΠ°ΠΊ:
$ sudo chmod ugo+x script.sh
ΠΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΏΡΠ°Π² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π³ΡΡΠΏΠΏΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²:
- ΠΠΎΠΌΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΠ΅ΡΠ°ΡΡΡΡ Π΄ΠΎΡΡΡΠΏ: Π²Π»Π°Π΄Π΅Π»ΡΡΡ (
u
), Π³ΡΡΠΏΠΏΠ΅ (g
), ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ (o
) ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌ (a
). ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄Π½Ρ, ΡΠ°ΠΊ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ. - ΠΠ°ΠΊΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ: ΡΡΠ΅Π½ΠΈΠ΅ (
r
), Π·Π°ΠΏΠΈΡΡ (w
), ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ (x
).
ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ°Π².
ΠΠ»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΈΡ, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠ°Π²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²: Β«-
Β», Β«+
Β» ΠΈΠ»ΠΈ Β«=
Β».
ΠΡ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π·Π°ΠΏΡΡΠΊ sh
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ GNU\Linux Π²ΡΠ΅ΠΌ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ β Π²Π»Π°Π΄Π΅Π»ΡΡΡ, Π³ΡΡΠΏΠΏΠ΅ ΡΠ°ΠΉΠ»Π° ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ β ΡΡΠΎ ΡΠΎ ΠΌΠ΅ΡΡΠΎ Π³Π΄Π΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΡΠΊΡΠΈΠΏΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΡΠΎΡΡΠΎ Π½Π°Π±Π΅ΡΠ΅ΡΠ΅ script.sh
, ΡΠΎ ΠΏΠΎΠΈΡΠΊ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ, Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ
, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΠΈΡΠ°Π½Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ PATH
ΠΈ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΠ΅ΡΡ ΡΠ΅ΠΉΡΠ°Ρ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Π³Π΄Π΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΡΠΊΡΠΈΠΏΡ, ΡΠΎ ΠΎΠ½ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½. Π Π½Π΅ΠΌΡ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.
ΠΠ°ΠΏΡΡΠΊ ΡΠΊΡΠΈΠΏΡΠ° sh
Π² GNU\Linux:
# ./script.sh
ΠΡΠ²Π΅Ρ:
ΠΠ΅ΡΠ΅Π΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡΠ° Π½Π°Π΄ΠΎ ΡΡΠ°Π²ΠΈΡΡ ΡΠΎΡΠΊΡ ΠΈ ΡΠ»ΡΡ ./
, ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄Π»Ρ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Π²ΠΈΡΡΡΠΎΠ².
Π’ΠΎΡΠΊΠ° ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Β«ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³
Β», Π° ΡΠ»ΡΡ Β«/
Β» β Β«ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΈ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠΊΡΠΈΠΏΡΠ°Β».
ΠΠ»ΠΈ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ ΠΎΡ ΠΊΠΎΡΠ½Ρ:
# /root/script.sh
ΠΡΠ²Π΅Ρ:
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ ΠΊ ΡΠΊΡΠΈΠΏΡΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΡΠΊΡΠΈΠΏΡ Π² ΠΎΠ΄Π½ΠΈ ΠΈΠ· ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠ°Π·Π°Π½Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ PATH
. ΠΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΡΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ β /usr/local/bin
.
# ln -s /root/script.sh /usr/local/bin/script.sh
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π·Π°ΠΏΡΡΠΊ ΡΠΊΡΠΈΠΏΡΠ° ΠΏΡΠΎΡΡΠΎ Ρ ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡ Π½Π°Π·Π²Π°Π½ΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° ΡΠ°ΠΉΠ» ΡΠΊΡΠΈΠΏΡΠ°:
# cd /home/ # script.sh
ΠΡΠ²Π΅Ρ:
ΠΡΠΎ Π±ΡΠ» ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π²ΡΠ·Π²Π°ΡΡ ΡΠΊΡΠΈΠΏΡ, Π½ΠΎ Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ β ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ ΠΈ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅ΠΉ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ. ΠΡ ΠΌΠΎΠ³Π»ΠΈ ΡΠ΅Π΄ΠΊΠΎ Π²ΠΈΠ΄Π΅ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Ρ bash, Π½ΠΎ ΠΎΠ½ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΊΡΠΈΠΏΡΠΎΠ² php ΠΈΠ»ΠΈ python.
ΠΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ°ΠΌ bash
Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ Π΅ΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ bash’Π° ΡΠΆΠ΅ Ρ ΡΠ»Π°Π³ΠΎΠΌ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΡΡΠΈ executable
.
# bash script.sh
ΠΡΠ²Π΅Ρ:
Π Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΊΡΠΈΠΏΡ Π½Π° php
, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅:
# php script.php
ΠΠ°ΠΏΡΡΠΊ ΡΠΊΡΠΈΠΏΡΠ° Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
Π’Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΊΡΠΈΠΏΡ ΠΊΠ°ΠΊ ΡΠΎΠ½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ» &
:
# script.sh &
ΠΡΠ²Π΅Ρ:
ΠΡΠΉΡΠΈ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Ctrl + Π‘, ΡΠ°ΠΊ ΠΈ Ctrl + D.
Ctrl + C Π² GNU/Linux ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅Π³ΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅. ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ Π½Π΅ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ, ΠΈΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅ΡΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π°ΠΆΠ°ΡΡ Ctrl + C.
Ctrl + D ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΠΈΠ»ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ . ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ°, Π½Π°ΠΆΠ°ΡΠΈΠ΅ Ctrl + D ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π²Π²ΠΎΠ΄ Π·Π°Π²Π΅ΡΡΡΠ½. ΠΡΠ»ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΏΡΡΡΠΎΠΉ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ΅ΡΡΠΈΠΈ.
ΠΡΠΎΡΡΠΎΠΉ ΡΠΊΡΠΈΠΏΡ.
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΡΠΈΠΏΡ Π² GNU/Linux, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ΅ΠΊΡΡΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ Π½Π° ΡΠΊΡΠ°Π½.
# cd ~ # mcedit hello_user_date.sh
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΊΡΠΈΠΏΡΠ° script.sh
ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠΌ:
#!/bin/bash
echo "Hello, $USER!"
echo "Today is $(date)"
ΠΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠΎ ΡΠΊΡΠΈΠΏΡ Π½Π° bash. Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° echo "Hello, $USER!"
Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. $USER
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠΌΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π’ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠ° echo "Today is $(date)"
Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ΅ΠΊΡΡΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ. $(date)
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ date
, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ°ΠΏΡΡΡΠΈΠΌ ΡΠΊΡΠΈΠΏΡ:
# bash hello_user_date.sh
ΠΡΠ²Π΅Ρ:
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π² ΡΠΊΡΠΈΠΏΡΡ GNU\Linux ΠΏΡΠΈ Π΅Π³ΠΎ Π·Π°ΠΏΡΡΠΊΠ΅.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΡΠΊΡΠΈΠΏΡΠ΅ ΠΊΠ°ΠΊ $1
, $2
, $3
ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅, Π³Π΄Π΅ $1
β ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, $2
β Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
# cd ~ # mcedit hello_user_date.sh
#!/bin/bash
echo "Hello, $1!"
ΠΠ°ΠΏΡΡΡΠΈΠΌ ΡΠΊΡΠΈΠΏΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π΅ΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ $USER
:
# bash hello_user_date.sh $USER
ΠΡΠ²Π΅Ρ:
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ:
$0
β ΠΈΠΌΡ ΡΠΊΡΠΈΠΏΡΠ° (ΡΠΎ Π΅ΡΡΡ, ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π·Π°ΠΏΡΡΠ΅Π½);$#
β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²;$*
ΠΈΠ»ΠΈ$@
β ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ);$?
β ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ Π²ΡΠ²Π΅ΡΡΠΈ Π½Π° ΡΠΊΡΠ°Π½ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
# cd ~ # mcedit hello_user_date.sh
#!/bin/bash
echo "Hello, " $1 "!"
echo "Number of passed parameters: $#"
ΠΠ°ΠΏΡΡΡΠΈΠΌ ΡΠΊΡΠΈΠΏΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π΅ΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ $USER:
# bash hello_user_date.sh $USER
ΠΡΠ²Π΅Ρ:
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
ΠΡΠΈΡΠ²ΠΎΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² bash ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΠΈΡΠ»Π°. ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΠ²Π½ΠΎ, ΠΏΡΡΠ΅ΠΌ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈΠ»ΠΈ Π½Π΅ΡΠ²Π½ΠΎ, ΠΏΡΡΠ΅ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² bash Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π·Π½Π°ΠΊ ΡΠ°Π²Π΅Π½ΡΡΠ²Π° =
.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
company="Timeweb"
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅! ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π·Π½Π°ΠΊΠΎΠΌ ΡΠ°Π²Π΅Π½ΡΡΠ²Π° ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ, ΡΠΊΠ°Π·Π°Π² Π΅Π΅ ΠΈΠΌΡ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ echo
ΠΈ Π·Π½Π°ΠΊΠ° $
.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
echo $company
Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ΅ΡΠ΅Π· Π²Π²ΠΎΠ΄ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ read
.
ΠΠ°ΠΏΡΠΎΡΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΊΡΠΈΠΏΡ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠΌΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π΅Π³ΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
# cd ~ # mcedit request_a_variable.sh
#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"
ΠΠ°ΠΏΡΡΡΠΈΠΌ ΡΠΊΡΠΈΠΏΡ:
# bash request_a_variable.sh
ΠΡΠ²Π΅Ρ:
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
Π bash Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $HOME
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΡΡ ΠΊ Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π° $PWD
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΡΡ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ.
ΠΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ, Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΊΡΠΈΠΏΡΠ°Ρ .
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, $PATH
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ
bash ΠΈΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ.
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΈ ΡΠΊΡΠΈΠΏΡΠ°ΠΌΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ° Π² Π΄ΡΡΠ³ΠΎΠΉ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ export
:
export Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ export
ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΠΎΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ°: Β«ΠΠ²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ β Π€Π°ΠΉΠ» ~/.bashrcΒ».
Π£ΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ.
Π£ΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ β ΡΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡΡΠΈΠ½Π½ΠΎΡΡΠΈ ΠΈΠ»ΠΈ Π»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ. Π bash-ΡΠΊΡΠΈΠΏΡΠ°Ρ
ΡΡΠ»ΠΎΠ²ΠΈΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ
ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ if
.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° if
Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
if [ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ]
then
ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ, Π΅ΡΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π²Π΅ΡΠ½ΠΎ
fi
ΠΠ΄Π΅ΡΡ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ
ΡΠΊΠΎΠ±ΠΊΠ°Ρ
ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ. ΠΡΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΈΡΡΠΈΠ½Π½ΠΎ, ΡΠΎ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ then
ΠΈ fi
.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡ Π² GNU/Linux Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ chetnechet.sh
, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠΈΡΠ»ΠΎ, Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΡΠ΅ΡΠ½ΡΠΌ ΠΈΠ»ΠΈ Π½Π΅ΡΠ΅ΡΠ½ΡΠΌ.
# cd ~ # mcedit chetnechet.sh
#!/bin/bash
echo "ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠΈΡΠ»ΠΎ: "
read n
if (( $n % 2 == 0 ))
then
echo "Π§ΠΈΡΠ»ΠΎ $n ΡΠ΅ΡΠ½ΠΎΠ΅"
else
echo "Π§ΠΈΡΠ»ΠΎ $n Π½Π΅ΡΠ΅ΡΠ½ΠΎΠ΅"
fi
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ %
, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° 2
. ΠΡΠ»ΠΈ ΠΎΡΡΠ°ΡΠΎΠΊ ΡΠ°Π²Π΅Π½ 0
, ΡΠΎ ΡΠΈΡΠ»ΠΎ ΡΠ΅ΡΠ½ΠΎΠ΅
, ΠΈΠ½Π°ΡΠ΅ β Π½Π΅ΡΠ΅ΡΠ½ΠΎΠ΅
.
ΠΠ°ΠΏΡΡΡΠΈΠΌ ΡΠΊΡΠΈΠΏΡ:
# bash chetnechet.sh
ΠΡΠ²Π΅ΡΡ:
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΡ :
-eq
β ΡΠ°Π²Π½ΠΎ;-ne
β Π½Π΅ ΡΠ°Π²Π½ΠΎ;-gt
β Π±ΠΎΠ»ΡΡΠ΅;-lt
β ΠΌΠ΅Π½ΡΡΠ΅;-ge
β Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎ;-le
β ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $a
Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $b
, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
if [ $a -gt $b ]
then
echo "$a Π±ΠΎΠ»ΡΡΠ΅ $b"
fi
ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ Π² ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ Π²ΠΎΠΊΡΡΠ³ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² Π½Π΅Ρ, ΡΠΎ bash-ΡΠΊΡΠΈΠΏΡ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΠ°ΡΡ ΡΡΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ, Π° Π½Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Case.
ΠΡΠΎΠΌΠ΅ if
, Π² bash-ΡΠΊΡΠΈΠΏΡΠ°Ρ
ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ case
. ΠΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌ.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ case
Π² bash-ΡΠΊΡΠΈΠΏΡΠ°Ρ
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ»ΠΎΠ²Π½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ case
Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
case variable in
pattern1)
command1
;;
pattern2)
command2
;;
pattern3)
command3
;;
*)
default command
;;
esac
variable
β ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ;pattern1
,pattern2
,pattern3
β ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ;command1
,command2
,command3
β ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
Π‘ΠΈΠΌΠ²ΠΎΠ» *
Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠΏΠΈΡΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
Π‘ΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π΄Π΅Π½Ρ Π½Π΅Π΄Π΅Π»ΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅:
# cd ~ # mcedit case_day.sh
#!/bin/bash
day=$(date +%u)
case $day in
1)
echo "Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΏΠΎΠ½Π΅Π΄Π΅Π»ΡΠ½ΠΈΠΊ"
;;
2)
echo "Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π²ΡΠΎΡΠ½ΠΈΠΊ"
;;
3)
echo "Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΡΡΠ΅Π΄Π°"
;;
4)
echo "Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΡΠ΅ΡΠ²Π΅ΡΠ³"
;;
5)
echo "Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΏΡΡΠ½ΠΈΡΠ°"
;;
6)
echo "Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΡΡΠ±Π±ΠΎΡΠ°"
;;
7)
echo "Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π²ΠΎΡΠΊΡΠ΅ΡΠ΅Π½ΡΠ΅"
;;
*)
echo "ΠΠ΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π½Ρ Π½Π΅Π΄Π΅Π»ΠΈ"
;;
esac
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ day
, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ date +%u
. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, %u
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π½Ρ Π½Π΅Π΄Π΅Π»ΠΈ ΠΎΡ 1
(ΠΏΠΎΠ½Π΅Π΄Π΅Π»ΡΠ½ΠΈΠΊ
) Π΄ΠΎ 7
(Π²ΠΎΡΠΊΡΠ΅ΡΠ΅Π½ΡΠ΅
). ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌ ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ Π΄Π½ΡΠΌΠΈ Π½Π΅Π΄Π΅Π»ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ case. ΠΡΠ»ΠΈ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π½Ρ Π½Π΅Π΄Π΅Π»ΠΈ, ΡΠΎ ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠΌ Π΄Π½ΡΠΌ Π½Π΅Π΄Π΅Π»ΠΈ, ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΠ°ΠΏΡΡΡΠΈΠΌ ΡΠΊΡΠΈΠΏΡ:
# bash case_day.sh
ΠΡΠ²Π΅Ρ:
Π¦ΠΈΠΊΠ»Ρ.
Π¦ΠΈΠΊΠ»Ρ Π² bash ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π²Π° ΡΠΈΠΏΠ° ΡΠΈΠΊΠ»ΠΎΠ²: ΡΠΈΠΊΠ» for
ΠΈ ΡΠΈΠΊΠ» while
.
Π¦ΠΈΠΊΠ» for.
Π¦ΠΈΠΊΠ» for
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠΈΠΊΠ»Π° for
Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
for ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ in ΡΠΏΠΈΡΠΎΠΊ
do
ΠΊΠΎΠΌΠ°Π½Π΄Ρ
done
ΠΠ΄Π΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ
Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ do
ΠΈ done
.
ΠΡΠΈΠΌΠ΅Ρ:
# cd ~ # mcedit cycle_for.sh
#!/bin/bash
for i in {1..10}; do
echo "Number: $i"
done
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ i
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡ 1
Π΄ΠΎ 10
, ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ
Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° echo "Number: $i"
.
ΠΠ°ΠΏΡΡΡΠΈΠΌ:
# bash cycle_for.sh
ΠΡΠ²Π΅Ρ:
Π¦ΠΈΠΊΠ» while.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠΊΠ» while
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π½Π΅ ΡΡΠ°Π½Π΅Ρ Π»ΠΎΠΆΠ½ΡΠΌ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠΈΠΊΠ»Π° while
Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
while [ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ]
do
ΠΊΠΎΠΌΠ°Π½Π΄Ρ
done
ΠΠ΄Π΅ΡΡ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ ΡΠΈΠΊΠ»Π°.
ΠΠΎΠΌΠ°Π½Π΄Ρ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ do
ΠΈ done
, Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΈΡΡΠΈΠ½Π½ΡΠΌ.
ΠΡΠΈΠΌΠ΅Ρ:
# cd ~ # mcedit cycle_while.sh
#!/bin/bash
count=1
while [ $count -le 10 ]; do
echo "Count: $count"
count=$((count+1))
done
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ count
ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° 1
ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π°. ΠΠΎΠ³Π΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ count Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ 10
, ΡΠΈΠΊΠ» Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ.
ΠΠ°ΠΏΡΡΡΠΈΠΌ:
# bash cycle_while.sh
ΠΡΠ²Π΅Ρ:
Π€ΡΠ½ΠΊΡΠΈΠΈ.
Π€ΡΠ½ΠΊΡΠΈΠΈ Π² bash ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Π² Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ. Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Ρ ΠΈΠ· ΡΠΊΡΠΈΠΏΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΡΡΠ½ΠΊΡΠΈΠΈ () {
ΠΊΠΎΠΌΠ°Π½Π΄Ρ_ΠΈ_Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
}
- ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ Π±ΡΠΊΠ²Ρ ΠΈΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π±ΡΠΊΠ²Ρ, ΡΠΈΡΡΡ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ.
- ΠΠ° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ .
- ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²Π½ΡΡΡΠΈ ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ.
ΠΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΈ Π΄Π°ΡΡ:
# cd ~
# mcedit today_date.sh
#!/bin/bash
print_date () {
echo "Π‘Π΅Π³ΠΎΠ΄Π½ΡΡΠ½ΡΡ Π΄Π°ΡΠ°: $(date)"
}
print_date #ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ°ΠΏΡΡΡΠΈΠΌ:
# bash today_date.sh
ΠΡΠ²Π΅Ρ:
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΡΠ½ΠΊΡΠΈΡ.
Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π²Π½ΡΡΡΠΈ ΡΠΊΠΎΠ±ΠΎΠΊ ΠΏΡΠΈ ΠΈΡ Π²ΡΠ·ΠΎΠ²Π΅.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΈΡ ΡΡΠΌΠΌΡ:
# cd ~ # mcedit sum_of_arguments.sh
#!/bin/bash
sum_numbers () {
result=$(( $1 + $2 ))
echo "Π‘ΡΠΌΠΌΠ° ΡΠΈΡΠ΅Π» $1 ΠΈ $2 ΡΠ°Π²Π½Π° $result"
}
sum_numbers 10 20 #ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ
$1
ΠΈ$2
β ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈ Π²ΡΠΎΡΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ;sum_numbers 10 20
Π²ΡΠ·ΠΎΠ²Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡsum_numbers
Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ10
ΠΈ20
ΠΈ Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΠ°ΠΏΡΡΡΠΈΠΌ:
# bash sum_of_arguments.sh
ΠΡΠ²Π΅Ρ:
ΠΠΎΠ·Π²ΡΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ.
Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° return
.
# cd ~
# mcedit return_values.sh
#!/bin/bash
sum_numbers () {
result=$(( $1 + $2 ))
return $result
}
sum_numbers 12 24 #ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ
echo "Π‘ΡΠΌΠΌΠ° ΡΠΈΡΠ΅Π» ΡΠ°Π²Π½Π° $?" #ΠΡΠ²ΠΎΠ΄
ΠΠ΄Π΅ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ result
ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ return
.
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $?
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΎ Π΅ΡΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ β ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΡΠΌΠΌΡ.
ΠΠ°ΠΏΡΡΡΠΈΠΌ:
# bash return_values.sh
ΠΡΠ²Π΅Ρ:
Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
ΠΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΠΌΠΈΠΌΠΎ return
.
# cd ~
# mcedit other_return_values.sh
#!/bin/bash
sum_numbers () {
result=$(( $1 + $2 ))
echo $result
}
sum=$(sum_numbers 9 11)
echo "Π‘ΡΠΌΠΌΠ° ΡΠΈΡΠ΅Π» ΡΠ°Π²Π½Π° $sum" #ΠΡΠ²ΠΎΠ΄
ΠΠ΄Π΅ΡΡ, Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ $?
ΠΈ return
, ΠΌΡ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ sum ΠΈ Π·Π°ΡΠ΅ΠΌ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΡΠ°Π½.
ΠΠ°ΠΏΡΡΡΠΈΠΌ:
# bash other_return_values.sh
ΠΡΠ²Π΅Ρ:
Π Π°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌΠΈ.
Bash-ΡΠΊΡΠΈΠΏΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ Π² GNU/Linux.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
test -e filename
ΠΈΠ»ΠΈ
test -e filename && echo "Π€Π°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ" || echo "Π€Π°ΠΉΠ» Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ"
ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Π΅ΡΠ½Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0
, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ β Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
# cd ~ # mcedit test_file.sh
if test -e /root/test_file.sh; then
echo "Π€Π°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ"
else
echo "Π€Π°ΠΉΠ» Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ"
fi
ΠΠ°ΠΏΡΡΡΠΈΠΌ:
# bash test_file.sh
ΠΡΠ²Π΅Ρ:
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌ Π² bash-ΡΠΊΡΠΈΠΏΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ cd, mkdir, rmdir, ls ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΡΠ»Π°Π΄ΠΊΠ° ΡΠΊΡΠΈΠΏΡΠΎΠ².
ΠΡΠ»Π°Π΄ΠΊΠ° bash-ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΡΡΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°, Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠ»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ bash-ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΠ°ΠΊ set -x
, set -v
ΠΈ set -e
.
ΠΠΎΠΌΠ°Π½Π΄Π° set -x
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π½Π° ΡΠΊΡΠ°Π½ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡ
Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΠΌΠ°Π½Π΄Π° set -v
Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π° set -e
ΠΏΡΠ΅ΡΡΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠ° Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ set -x.
ΠΠΎΠΌΠ°Π½Π΄Π° set -x
Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ΅ΠΆΠΈΠΌ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠ΅ΡΠ΅Π΄ Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ.
# cd ~ # mcedit set_x.sh
#!/bin/bash
set -x # ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΠ»Π°Π΄ΠΊΡ
echo "ΠΠ°ΡΠ°Π»ΠΎ ΡΠΊΡΠΈΠΏΡΠ°"
name="John"
echo "ΠΡΠΈΠ²Π΅Ρ, $name!"
set +x # ΠΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΠ»Π°Π΄ΠΊΡ
ΠΠ°ΠΏΡΡΡΠΈΠΌ:
# bash set_x.sh
ΠΡΠ²Π΅Ρ:
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ set -v.
ΠΠΎΠΌΠ°Π½Π΄Π° set -v
Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΡΡΠΎΠΊΠΈ ΡΠΊΡΠΈΠΏΡΠ° ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΈΡ
ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ.
# cd ~ # mcedit set_v.sh
#!/bin/bash
set -v # ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠ²ΠΎΠ΄ ΡΡΡΠΎΠΊ
echo "ΠΠ°ΡΠ°Π»ΠΎ ΡΠΊΡΠΈΠΏΡΠ°"
name="John"
echo "ΠΡΠΈΠ²Π΅Ρ, $name!"
set +v # ΠΡΠΊΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠ²ΠΎΠ΄ ΡΡΡΠΎΠΊ
ΠΠ°ΠΏΡΡΡΠΈΠΌ:
# bash set_v.sh
ΠΡΠ²Π΅Ρ:
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ set -e.
ΠΠΎΠΌΠ°Π½Π΄Π° set -e
ΠΏΡΠ΅ΡΡΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠ°, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ (Π½Π΅Π½ΡΠ»Π΅Π²ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°).
# cd ~ # mcedit set_e.sh
#!/bin/bash
set -e # ΠΡΠ΅ΡΡΠ²Π°Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ΅
echo "ΠΠ°ΡΠ°Π»ΠΎ ΡΠΊΡΠΈΠΏΡΠ°"
ls /Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ_ΠΊΠ°ΡΠ°Π»ΠΎΠ³ # ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ
echo "ΠΡΠ° ΡΡΡΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°"
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ls
, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π·Π°Π²Π΅ΡΡΠΈΠ»Π°ΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ, ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΡΠΎΠΊΠ° echo
Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ.
ΠΠ°ΠΏΡΡΡΠΈΠΌ:
# bash set_e.sh
ΠΡΠ²Π΅Ρ:
ΠΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΡΠ»Π°Π΄ΠΊΠΈ:
# cd ~
# mcedit ko-ko-kombo.sh
#!/bin/bash
set -exv # ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΠ»Π°Π΄ΠΊΡ, ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΈ Π²ΡΠ²ΠΎΠ΄ ΡΡΡΠΎΠΊ
echo "ΠΠ°ΡΠ°Π»ΠΎ ΡΠΊΡΠΈΠΏΡΠ°"
name="John"
echo "ΠΡΠΈΠ²Π΅Ρ, $name!"
ls /Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ_ΠΊΠ°ΡΠ°Π»ΠΎΠ³ # ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ
echo "ΠΡΠ° ΡΡΡΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°"
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡ ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ls
, ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΡΠΎΠΊΠ° echo
Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ.
ΠΠ°ΠΏΡΡΡΠΈΠΌ:
# bash ko-ko-kombo.sh
ΠΡΠ²Π΅Ρ:
ΠΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ bash-ΡΠΊΡΠΈΠΏΡΡ, Π²ΡΡΠ²Π»ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π° ΡΠ°Π½Π½ΠΈΡ ΡΡΠ°ΠΏΠ°Ρ .
ΠΡΠΈΠ³ΠΈΠ½Π°Π»Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
- qna.habr.com Β«ΠΠ°ΠΊ Π·Π°ΠΏΡΡΡΠΈΡΡ sh ΡΠΊΡΠΈΠΏΡΡ Π² Linux?Β»
- superuser.com Β«What is the difference between bash and sh?Β»
- timeweb.cloud Β«ΠΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π² Linux BashΒ».