ΠΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ bash: ΠΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ° ΠΈ bashΒ . ΠΡΠ°ΡΠΊΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Bash
ΠΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ° ΠΈ bashΒ . ΠΡΠ°ΡΠΊΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Bash
ΠΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ° ΠΈ bashΒ
Π‘ΠΊΡΠΈΠΏΡΠΎΠ²ΠΎΠΉ ΡΠ·ΡΠΊ bash ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠ°ΠΊ Π²Ρ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅, Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ expr. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ true, ΡΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ. ΠΡΠΈΡΠΈΠ½Π° ΠΊΡΠΎΠ΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ true ΠΈ expr ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈΡ . ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ Π² bash ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±ΡΡΡΡΠ΅Π΅. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΎΠΌΡ, ΡΡΠΎ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ true ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°»:», Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° exprβ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π²ΠΈΠ΄Π°$((…)). ΠΡΠ΄ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Ρ, ΠΎΠ½Π° ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ$(…). ΠΡΠ»ΠΈΡΠΈΠ΅ ΡΡΡ Π² ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΠΊΠΎΠ±ΠΎΠΊ. Π’Π°ΠΊ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΆΠ΅ ΠΈΡΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΡΠΎ:
#!/bin/bash
x=8 # ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ x Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 8
y=4 # ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ y Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 4
# ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ x ΠΈ y ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π² z:
z=$(($x + $y))
echo "Π‘ΡΠΌΠΌΠ° $x ΠΈ $y ΡΠ°Π²Π½Π° $z"
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, Π²ΡΠ±ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π·Π° Π²Π°ΠΌΠΈ. ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ expr Π΄Π»Ρ Π²Π°Ρ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ ΠΈ ΠΏΡΠΈΠ²ΡΡΠ½Π΅Π΅, ΡΠ΅ΠΌ $((…)), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Π³ΠΎ.
Π‘ΠΊΡΠΈΠΏΡΠΎΠ²ΠΎΠΉ ΡΠ·ΡΠΊ bash ΡΠΌΠ΅Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅, ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ°ΡΠΊΠ° ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ. ΠΠ°ΠΆΠ΄ΠΎΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ:
ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ | ΠΠΏΠ΅ΡΠ°ΡΠΎΡ |
---|---|
Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ | + |
ΠΡΡΠΈΡΠ°Π½ΠΈΠ΅ | — |
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ | * |
Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ | / |
ΠΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ | % |
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· Π²Π°Ρ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π·Π½Π°ΠΊΠΎΠΌΠΎ Ρ ΠΏΠ΅ΡΠ²ΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠΎ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΈΡΠ»ΠΎ ΡΠ°Π²Π½ΠΎΠ΅ ΠΎΡΡΠ°ΡΠΊΡ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π½Π° Π΄ΡΡΠ³ΠΎΠ΅. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² bash:
#!/bin/bash
x=5 # ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ x ΡΠ°Π²Π½ΡΠΌ 5
y=3 # ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ y ΡΠ°Π²Π½ΡΠΌ 3
# ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΡΡΠΌΠΌΡ x ΠΈ y Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ add
add=$(($x + $y))
# ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΎΡΡΡ x ΠΈ y Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ sub
sub=$(($x β $y))
# ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ x Π½Π° y ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ mul
mul=$(($x * $y))
# Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ div ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄Π΅Π»Π΅Π½ΠΈΡ x Π½Π° y
div=$(($x / $y))
# ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ x Π½Π° y ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ mod
mod=$(($x % $y))
# ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌ ΠΎΡΠ²Π΅ΡΡ
echo "Π‘ΡΠΌΠΌΠ° ΡΠ°Π²Π½Π°: $add"
echo "Π Π°Π·Π½ΠΎΡΡΡ ΡΠ°Π²Π½Π° $sub"
echo "ΠΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ $mul"
echo "Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π΄Π΅Π»Π΅Π½ΠΈΡ $div"
echo "ΠΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ $mod"
ΠΠΎΠ΄, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ expr. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ add=$(($x + $y)) ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ add=$(expr $x + $y)ΠΈΠ»ΠΈadd=`expr $x + $y`.
ΠΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΊΠ΅
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ Π³Π»Π°Π²Π° >
Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅, ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΌΠΎΠ΄ΡΠ»Ρ Π² Bash
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π²Π°ΡΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ.Β ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ°Π·ΡΠΌΠ½Π°Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΡ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ.Β ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ, ΠΈΡ ΡΠ°Π·ΡΠΌΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ, ΠΈ Π·Π½Π°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΡΠΌ Π½Π°Π²ΡΠΊΠΎΠΌ ΠΌΠ°ΡΡΠ΅ΡΡΡΠ²Π° ΠΌΠ°ΡΡΠ΅ΡΠΎΠ² Bash.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠΈ Π² ΡΡΠ΅Π½Π°ΡΠΈΡΡ Bash.Β ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΡΡ, Π½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ — ΡΡΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ (ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ).
Let
LetΒ ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Bash, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠΎΡΡΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΡ.Β ΠΠ½ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌΡ ΡΠΎΡΠΌΠ°ΡΡ:
let <Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅>
let <Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅> |
ΠΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΎΠΏΠΈΡΠ΅ΠΌ Π½ΠΈΠΆΠ΅.Β ΠΠ΅ΡΠ²Π°Ρ ΡΠ°ΡΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
let_example.sh
#!/bin/bash
# ΠΠ°Π·ΠΎΠ²Π°Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ let
let a=5+4
echo $a # 9
let «a = 5 + 4″
echo $a # 9
let a++
echo $a # 10
let «a = 4 * 5″
echo $a # 20
let «a = $1 + 30″
echo $a # 30 + ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/bin/bash # ΠΠ°Π·ΠΎΠ²Π°Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ let Β let a=5+4 echo $a # 9 Β let «a = 5 + 4» echo $a # 9 Β let a++ echo $a # 10 Β let «a = 4 * 5» echo $a # 20 Β let «a = $1 + 30» echo $a # 30 + ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ |
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΡΡΠΎ:
- Π‘ΡΡΠΎΠΊΠ° 4Β — ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ.Β ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΡΡΠ°Π²ΠΈΠΌ ΠΊΠ°Π²ΡΡΠΊΠΈ Π²ΠΎΠΊΡΡΠ³ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ Π±Π΅Π· ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ².
- Π‘ΡΡΠΎΠΊΠ° 7Β — ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠ°Π²ΡΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΠΌ Π²ΡΠ΄Π΅Π»ΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΡΠΌ.
- Π‘ΡΡΠΎΠΊΠ° 10Β — ΡΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ a Π½Π° 1. ΠΡΠΎ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ Π·Π°ΠΏΠΈΡΡ Β«a = a + 1Β».
- Π‘ΡΡΠΎΠΊΠ° 16Β — ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠΈΡΡ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
ΠΠΎΡ ΡΠ°Π±Π»ΠΈΡΠ° Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ.Β ΠΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ.
+, -, / *, / | Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅, ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΄Π΅Π»Π΅Π½ΠΈΠ΅ |
var ++ | Π£Π²Π΅Π»ΠΈΡΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ var Π½Π° 1 |
var— | Π£ΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ var Π½Π° 1 |
% | ΠΠΎΠ΄ΡΠ»Ρ (Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΡΠ°ΡΠΎΠΊ ΠΏΠΎΡΠ»Π΅ Π΄Π΅Π»Π΅Π½ΠΈΡ) |
ΠΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈ Π² Π΄ΡΡΠ³ΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°Ρ , ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π½ΠΈΠΆΠ΅.
Expr
ExprΒ ΠΏΠΎΡ ΠΎΠΆ Π½Π° let, Π½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΎΡΠ²Π΅Ρ.Β Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡΒ letΒ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡΡΠ°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ.Β ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.Β Π’Π°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡΒ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ exprΒ Π² ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
expr item1 ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ item2
expr item1 ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ item2 |
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
expr_example.sh
#!/bin/bash
# ΠΠ°Π·ΠΎΠ²Π°Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ expr
expr 5 + 4
expr «5 + 4″
expr 5+4
expr 5 \* $1
expr 11 % 2
a=$( expr 10 — 3 )
echo $a # 7
#!/bin/bash # ΠΠ°Π·ΠΎΠ²Π°Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ expr Β expr 5 + 4 Β expr «5 + 4» Β expr 5+4 Β expr 5 \* $1 Β expr 11 % 2 Β a=$( expr 10 — 3 ) echo $a # 7 |
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΡΡΠΎ:
- Π‘ΡΡΠΎΠΊΠ° 4Β — ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ.Β ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ Π½Π΅Ρ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ².
- Π‘ΡΡΠΎΠΊΠ° 6Β — ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΊΠ°Π²ΡΡΠΊΠΈ Π²ΠΎΠΊΡΡΠ³ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ, Π° ΠΏΠ΅ΡΠ°ΡΠ°ΡΡΡΡ.
- Π‘ΡΡΠΎΠΊΠ° 8Β — ΠΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ, Π° ΠΏΠ΅ΡΠ°ΡΠ°ΡΡΡΡ.
- Π‘ΡΡΠΎΠΊΠ° 10Β — ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΡΠΎΠ±ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Bash, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΈΡ (ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΠΊΠΎΡΡΡ ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄), ΡΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΡ ΠΎΡΠΎΠ±ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
- Π‘ΡΡΠΎΠΊΠ° 12Β — ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌΒ ΠΌΠΎΠ΄ΡΠ»ΡΒ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°Β .Β ΠΠΎΠ΄ΡΠ»Ρ — ΡΡΠΎ ΠΎΡΡΠ°ΡΠΎΠΊ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄Π΅Π»ΠΈΡΡΡ Π½Π° Π²ΡΠΎΡΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ.
- Π‘ΡΡΠΎΠΊΠ° 14Β — ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ expr Π² ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉΒ a.
ΠΠ²ΠΎΠΉΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ
Π ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅Β» ΠΌΡ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.Β ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π±Π°Π·ΠΎΠ²ΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΡ Π΄Π»Ρ Π½Π°Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π±Π΅ΡΠ΅ΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ.Β ΠΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ:
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ:
expansion_example.sh
#!/bin/bash
# ΠΠ°Π·ΠΎΠ²Π°Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π²ΠΎΠΉΠ½ΡΡ
ΡΠΊΠΎΠ±ΠΎΠΊ
a=$(( 4 + 5 ))
echo $a # 9
a=$((3+5))
echo $a # 8
b=$(( a + 3 ))
echo $b # 11
b=$(( $a + 4 ))
echo $b # 12
(( b++ ))
echo $b # 13
(( b += 3 ))
echo $b # 16
a=$(( 4 * 5 ))
echo $a # 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #!/bin/bash # ΠΠ°Π·ΠΎΠ²Π°Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π²ΠΎΠΉΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ Β a=$(( 4 + 5 )) echo $a # 9 Β a=$((3+5)) echo $a # 8 Β b=$(( a + 3 )) echo $b # 11 Β b=$(( $a + 4 )) echo $b # 12 Β (( b++ )) echo $b # 13 Β (( b += 3 )) echo $b # 16 Β a=$(( 4 * 5 )) echo $a # 20 |
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΡΡΠΎ:
- Π‘ΡΡΠΎΠΊΠ° 4Β — ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ.Β ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΡΠ΅Π½ΠΈΡ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ.
- Π‘ΡΡΠΎΠΊΠ° 7Β — ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ, ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊ ΠΆΠ΅, Π΅ΡΠ»ΠΈ ΠΌΡ Π²ΡΠ±Π΅ΡΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π».
- Π‘ΡΡΠΎΠΊΠ° 10Β — ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±Π΅Π· ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π·Π½Π°ΠΊΠ° $.
- Π‘ΡΡΠΎΠΊΠ° 13Β — ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² Π·Π½Π°ΠΊ $, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅.
- Π‘ΡΡΠΎΠΊΠ° 16Β — ΠΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³Π°Ρ ΡΠΎΡΠΌΠ°.Β ΠΠ΄Π΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ b ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° 1 (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΡ ΠΆΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΡΡΠΎ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅Β letΒ ).Β ΠΠΎΠ³Π΄Π° ΠΌΡ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΠΌ, Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ΅Π½ Π·Π½Π°ΠΊ $, ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌ.
- Π‘ΡΡΠΎΠΊΠ° 19Β — ΠΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³Π°Ρ ΡΠΎΡΠΌΠ° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°.Β ΠΠ΄Π΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ b ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° 3. ΠΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»ΡΒ b = b + 3Β .
- Π‘ΡΡΠΎΠΊΠ° 19Β — Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΡ ΠΎΠ΄ΠΈΡΡ ΠΈΠ·Β Π·Π½Π°ΠΊΠ°Β *Β .
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ double parenthese Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΎ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅ΡΠ΅ Π΅Π³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.Β ΠΡΠΎ ΡΠ°ΡΡΡ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΠΌ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄.Β ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π²ΡΡΡΠΎΠ΅Π½Ρ Π² Bash, ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ (Ρ ΠΎΡΡ, ΡΠ΅ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, Ρ ΡΡΡΠΎΠΉ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΌΠΎΡΡΡ ΠΌΠ°ΡΠΈΠ½ Π² Π½Π°ΡΠΈ Π΄Π½ΠΈ ΡΠ°Π·Π½ΠΈΡΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½Π°).
ΠΠ»ΠΈΠ½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
ΠΡΠΎ Π½Π΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ°, Π½ΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ»Π΅Π·Π½Π°.Β ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ Π΄Π»ΠΈΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²), Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
length_example.sh
#!/bin/bash
# ΠΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π΄Π»ΠΈΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
a=’Hello World’
echo ${#a} # 11
b=4953
echo ${#b} # 4
#!/bin/bash # ΠΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π΄Π»ΠΈΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Β a=’Hello World’ echo ${#a} # 11 Β b=4953 echo ${#b} # 4 |
Π§Π°ΡΡΡ 3. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄ Π² Bash
Π§Π°ΡΡΡ 5. If, else, case Π² Bash
ΠΡΡΠΎΡΠ½ΠΈΠΊ: https://ryanstutorials.net/bash-scripting-tutorial/bash-arithmetic.php
ΠΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ UNIX
ΠΠ°ΠΊ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π² bash/sh ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ? ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ².
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ
ΠΠΎΠΊΠ° Π²Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ Π² bash.
ΠΠΎΡ 6 Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ:
# ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
echo 4 + 5 = $((4 + 5))
# Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅
echo 5 — 4 = $[ 5 — 4 ]
# ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅
echo 4 x 5 = $((4 * 5))
# Π΄Π΅Π»Π΅Π½ΠΈΠ΅ (ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· ΠΎΡΡΠ°ΡΠΊΠ°)
echo 6 / 3 = $((6 / 3))
# ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ
echo 5 % 4 = $((5 % 4))
# Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ
echo 2 ^ 4 = $[ 2 ** 4 ]
| # ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ echo 4 + 5 = $((4 + 5)) # Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ echo 5 — 4 = $[ 5 — 4 ] # ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ echo 4 x 5 = $((4 * 5)) # Π΄Π΅Π»Π΅Π½ΠΈΠ΅ (ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· ΠΎΡΡΠ°ΡΠΊΠ°) echo 6 / 3 = $((6 / 3)) # ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ echo 5 % 4 = $((5 % 4)) # Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ echo 2 ^ 4 = $[ 2 ** 4 ] |
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ: $(( Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ )) ΠΈΠ»ΠΈ $[ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ].
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ:
a=2
b=4
result=$(( $a ** $b ))
echo $result
| a=2 b=4 result=$(( $a ** $b )) echo $result |
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅
ΠΠ»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π²Π½Π΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°. ΠΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠΈΠ»ΠΈΡΡ bc, ΠΊΠΎΡΠΎΡΠ°Ρ Π±Π΅ΡΠ΅Ρ Π½Π° ΡΠ΅Π±Ρ ΡΠΎΠ»Ρ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ°.
ΠΠ»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΡΠ°Π·Ρ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΡ:
a=10.5
b=3.2
echo «$a-$b» | bc -l
| a=10.5 b=3.2 echo «$a-$b» | bc -l |
ΠΠ»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°:
a=10.5
b=3.2
c=`echo «$a-$b» | bc -l`
echo $c
| a=10.5 b=3.2 c=`echo «$a-$b» | bc -l` echo $c |
UNIX
ΠΠ°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ°Π½Π½Π°Ρ Π·Π°ΠΏΠΈΡΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° Π² 12.09.2018 18:44 ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π° Π² ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΠΊΠΎΠ½Π΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΠΎΡΡΠ°Π²ΠΈΡΡ Π²Π°Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ.
ΠΠ°Π»ΠΎ Π±ΡΠΊΠ°ΡΡ? Π§ΠΈΡΠ°ΠΉΡΠ΅ Π΅ΡΡΠΎ !
ΠΠΎΠ΄ΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ° Π² UNIX
Π‘Π΅Π½ΡΡΠ±ΡΡ 12, 2018 Π³.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΡΡΠΈΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ Π² ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈ Π²ΡΡΠΈΡΠ»ΡΡΡ ΡΠ°Π·Π½ΠΈΡΡ. ΠΠ±Π΅ Π·Π°Π΄Π°ΡΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ΅ΡΠ°Π΅ΠΌΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ UNIX.
ΠΠ°ΡΡ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΡΠ»Π° ΡΠ΅ΠΊΡΠ½Π΄ ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄ Ρ Π½Π°ΡΠ°Π»Π° UNIX ΡΠΏΠΎΡ
ΠΈ
[crayon-5f74cd98719d1470572593/] …
Π§ΠΈΡΠ°ΡΡ
HTTP Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ nginx
ΠΠ΅ΠΊΠ°Π±ΡΡ 3, 2019 Π³.
ΠΠ°Π΄Π°ΡΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ SEO, ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΡΠ°ΠΉΡΠΎΠ² ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ°ΠΉΠ»Π° robots.txt …
Π§ΠΈΡΠ°ΡΡ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π² ΡΡΠ΅Π½Π°ΡΠΈΡΡ Bash
ΠΠ°Π²Π°ΠΉΡΠ΅ Π·Π°ΠΉΠΌΠ΅ΠΌΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΎΠΉ Π² Bash!
ΠΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² bash Π²Ρ ΡΠ°ΡΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΡΠ΅, ΡΡΠΎ Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΡΡΠ½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΡΡΠ°Π²ΡΠ΅Π΅ΡΡ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΡΠΎΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠ°ΡΠΎΠ»Ρ, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Ρ ΠΎΡΡΠΎΠ², ΠΏΡΠΎΠΏΡΡΠΊΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠ΅ΡΠΈ ΠΈ Ρ. Π΄.
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΡΠ΅ΡΠΈΠΈ ΡΡΠ°ΡΠ΅ΠΉ ΠΎ bash Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ Π²Ρ Π½Π°ΡΡΠΈΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ bash Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ.
Π§ΡΠΎΠ±Ρ ΠΎΡΠ²Π΅ΠΆΠΈΡΡ Π²Π°ΡΡ ΠΏΠ°ΠΌΡΡΡ, Π²ΠΎΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π² bash:
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
+ | ΠΏΡΠΈΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ |
β | ΡΡΠ±ΡΡΡΠ°ΠΊΡΠΈΡ |
* | ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ |
/ | ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ (Π±Π΅Π· Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠΈΡΠ΅Π») |
% | Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ (Π΄Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΡΠ°ΡΠΎΠΊ) |
** | Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ (x Π² ΡΡΠ΅ΠΏΠ΅Π½ΠΈ y) |
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ Π² ΡΡΠ΅Π½Π°ΡΠΈΡΡ bash
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ bash-ΡΠΊΡΠΈΠΏΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌΒ add.shΒ , ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ Π΄Π²Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π° (Π² Π±Π°ΠΉΡΠ°Ρ ) ΠΈ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
Π Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π½Π°ΠΊΠΎΠΌΡ ΡΒ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π² ΡΡΠ΅Π½Π°ΡΠΈΡΡ bash.Β ΠΠ°Π΄Π΅ΡΡΡ, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ cut ΠΈ du.
ΠΠΎΠΌΠ°Π½Π΄Π°Β du Π΄Π°Π΅Ρ Π²Π°ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΒ ΡΠ°ΠΉΠ»Π°.Β Π Π²ΡΠ²ΠΎΠ΄Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°, ΡΠ°ΠΊ ΠΈ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°.Β ΠΠ΄Π΅ΡΡΒ ΠΊΠΎΠΌΠ°Π½Π΄Π° cutΒ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° (Ρ.Π΅. ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π°) ΠΈΠ· Π²ΡΠ²ΠΎΠ΄Π°.Β ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ du ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ cutΒ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°.
ΠΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ:
#!/bin/bash fs1=$(du -b $1 | cut -f1) fs2=$(du -b $2 | cut -f1) echo "Π Π°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° $1 is: $fs1" echo "Π Π°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° $2 is: $fs2" total=$(($fs1 + $fs2)) echo "ΠΠ±ΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ: $total"
Β
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΡΠ΅ Π΄Π²Π° ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ΅Π½Π°ΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π΄Π΅ΡΡ ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Ρ Π΄Π²Π° ΡΠ°ΠΉΠ»Π° /etc/passwd ΠΈ /etc/group Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²:
MasterEx@andreyex:~/scripts$ ./addition.sh /etc/passwd /etc/group Π Π°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° /etc/passwd is: 2795 Π Π°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° /etc/group is: 1065 ΠΠ±ΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ: 3860
Β
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ addition.sh:
total=$(($fs1 + $fs2))
Β
ΠΠ΄Π΅ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ + Π΄Π»Ρ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΡΠΈΡΠ΅Π» $fs1 ΠΈ $fs2. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΠΊΠ»ΡΡΠΈΡΡ Π΅Π³ΠΎ Π² Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
$((arithmetic-expression))
Β
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΌΠΈΠ½ΡΡ (-) Π΄Π»Ρ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ.Β ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ ΡΠ΅ΠΌΠΈ:
sub=$((10-3))
Β
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΡ Π² ΡΡΠ΅Π½Π°ΡΠΈΡΡ bash
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΉ bash Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌΒ giga2mega.sh, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π³ΠΈΠ³Π°Π±Π°ΠΉΡΡ (ΠΠ) Π² ΠΌΠ΅Π³Π°Π±Π°ΠΉΡΡ (ΠΠ):
#!/bin/bash GIGA=$1 MEGA=$(($GIGA * 1024)) echo "$GIGA GB is equal to $MEGA MB"
Β
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΠΌ ΡΠΊΡΠΈΠΏΡ, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ Π² ΡΠ΅ΡΡΡΠ΅Ρ Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ°Ρ :
MasterEx@andreyex:~/scripts$ ./giga2mega.sh 4 4 GB is equal to 4096 MB
Β
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ (*), ΡΡΠΎΠ±Ρ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ Π½Π° 1024, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ Π² ΠΌΠ΅Π³Π°Π±Π°ΠΉΡΠ°Ρ :
MEGA=$(($GIGA * 1024))
Β
Π ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ (ΠΠ) Π² ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡΡ (ΠΠ):
KILO=$(($GIGA * 1024 * 1024))
Β
ΠΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ Π²Π°ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π³ΠΈΠ³Π°Π±Π°ΠΉΡΡ Π² Π±Π°ΠΉΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ!
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ (/), ΡΡΠΎΠ±Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π΄Π²Π° ΡΠΈΡΠ»Π°.Β ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ div Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ ΠΏΡΡΠΈ:
div=$((20 / 4))
Β
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅ Π΄ΡΠΎΠ±ΠΈ ΡΠ΅ΡΡΡΡΡΡ.Β ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅ 5 Π½Π° 2, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ 2, ΡΡΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅Π²Π΅ΡΠ½ΠΎ:
MasterEx@andreyex:~/scripts$ div=$((5 / 2)) MasterEx@andreyex:~/scripts$ echo $div 2
Β
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄; Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ bc. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ 5 Π½Π° 2 Ρ ΠΏΠΎΠΌΠΎΡΡΡ bc ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ:
echo "5/2" | bc -l 2.50000000000000000000
Β
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Ρ bc ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π΅ΡΠ΅ Π΄Π΅Π»ΠΎ Ρ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ.
Β
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ power ΠΈ ΠΎΡΡΠ°ΡΠΊΠ° (ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ)
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ! ΠΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΡΠΈΠΏΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ power.sh,Β ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π΄Π²Π° ΡΠΈΡΠ»Π°Β aΒ ΠΈΒ bΒ (Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²)Β ΠΈ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΒ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΡΒ aΒ Π² ΡΡΠ΅ΠΏΠ΅Π½ΡΒ b:
#!/bin/bash a=$1 b=$2 result=$((a**b)) echo "$1^$2=$result"
Β
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ (**) , ΡΡΠΎΠ±Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ a Π² ΡΡΠ΅ΠΏΠ΅Π½ΠΈ b.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΡΠΊΠΎΠ² ΡΠΊΡΠΈΠΏΡΠ°, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ Π΄Π°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΎΡΠ²Π΅ΡΡ:
MasterEx@andreyex:~/scripts$ ./power.sh 2 3 2^3=8 MasterEx@andreyex:~/scripts$ ./power.sh 3 2 3^2=9 MasterEx@andreyex:~/scripts$ ./power.sh 5 2 5^2=25 MasterEx@andreyex:~/scripts$ ./power.sh 4 2 4^2=16
Β
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ (%) Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΎΡΡΠ°ΡΠΊΠΎΠ².Β ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Β ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉΒ remΒ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ Π±ΡΠ΄Π΅ΡΒ ΡΠ°Π²Π½ΠΎΒ 2:
rem=$((17%5))
Β
ΠΡΡΠ°ΡΠΎΠΊ Π·Π΄Π΅ΡΡ 2, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ 5 Π² 17 ΡΡΠΈ ΡΠ°Π·Π°, Π° Π΄Π²Π° ΠΎΡΡΠ°Π΅ΡΡΡ!
Β
ΠΡΠ΅ΠΌΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΡ bash Π΄Π»Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅ΡΠ° ΡΡΠ΅ΠΏΠ΅Π½Π΅ΠΉ
ΠΠ°Π²Π°ΠΉΡΠ΅Β Π·Π°Π²Π΅ΡΡΠΈΠΌΒ ΡΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, ΡΠΎΠ·Π΄Π°Π² ΡΠΊΡΠΈΠΏΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌΒ c2f.shΒ , ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π³ΡΠ°Π΄ΡΡΡ Π¦Π΅Π»ΡΡΠΈΡ Π² Π³ΡΠ°Π΄ΡΡΡ Π€Π°ΡΠ΅Π½Π³Π΅ΠΉΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½ΠΈΠΆΠ΅:
F = C x (9/5) + 32
Β
ΠΡΠΎ Π±ΡΠ΄Π΅Ρ Ρ ΠΎΡΠΎΡΠ΅Π΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²Π°Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠ·Π½Π°Π»ΠΈ Π² ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΏΠΎ bash.
ΠΠΎΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ (ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°):
#!/bin/bash C=$1 F=$(echo "scale=2; $C * (9/5) + 32" | bc -l) echo "$C Π³ΡΠ°Π΄ΡΡΠΎΠ² Π¦Π΅Π»ΡΡΠΈΡ ΠΏΡΠΈΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ ΠΊ $F Π³ΡΠ°Π΄ΡΡΠΎΠ² ΠΏΠΎ Π€Π°ΡΠ΅Π½Π³Π΅ΠΉΡΡ."
Β
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ bc, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ Ρ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΌΠΈ Π·Π½Π°ΠΊΠ°ΠΌΠΈ, ΠΈ ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ βscale = 2β Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° Π² Π΄Π²ΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠΎΡΠΊΠ°Ρ .
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΡΠΊΠΎΠ² ΡΠΊΡΠΈΠΏΡΠ°, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ:
MasterEx@andreyex:~/scripts$ ./c2f.sh 2 2 Π³ΡΠ°Π΄ΡΡΠΎΠ² Π¦Π΅Π»ΡΡΠΈΡ ΡΠ°Π²Π½ΠΎ 35.60 Π³ΡΠ°Π΄ΡΡΠΎΠ² ΠΏΠΎ Π€Π°ΡΠ΅Π½Π³Π΅ΠΉΡΡ. MasterEx@andreyex:~/scripts$ ./c2f.sh -3 -3 Π³ΡΠ°Π΄ΡΡΠΎΠ² Π¦Π΅Π»ΡΡΠΈΡ ΡΠ°Π²Π½ΠΎ 26.60 Π³ΡΠ°Π΄ΡΡΠΎΠ² ΠΏΠΎ Π€Π°ΡΠ΅Π½Π³Π΅ΠΉΡΡ. MasterEx@andreyex:~/scripts$ ./c2f.sh 27 27 Π³ΡΠ°Π΄ΡΡΠΎΠ² Π¦Π΅Π»ΡΡΠΈΡ ΡΠ°Π²Π½ΠΎ 80.60 Π³ΡΠ°Π΄ΡΡΠΎΠ² ΠΏΠΎ Π€Π°ΡΠ΅Π½Π³Π΅ΠΉΡΡ.
Β
ΠΡΠ»ΠΈΡΠ½ΠΎ! ΠΠ° ΡΡΠΎΠΌ ΠΌΡ ΠΏΠΎΠ΄ΠΎΡΠ»ΠΈ ΠΊ ΠΊΠΎΠ½ΡΡ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ. ΠΠ°Π΄Π΅ΡΡΡ, Π²Π°ΠΌ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΠΎΡΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ bash.
ΠΡΠ»ΠΈ Π²Ρ Π½Π°ΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΡ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π²ΡΠ΄Π΅Π»ΠΈΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΡΡΠ° ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ Ctrl+Enter.
ΠΡΡ ΠΏΡΠ°Π²Π΄Π° ΠΎ ΠΏΠΈΠ½Π³Π²ΠΈΠ½Π°Ρ !: ΠΡΠ°ΡΠΊΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Bash
ΠΡΠΊΠ»Π°Π΄ΡΠ²Π°Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ Π²ΡΠΎΡΠΎΠΉ ΡΠ°ΡΡΡ ΡΡΠ°ΡΡΠΈ ΠΏΡΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° bash, Π½Π°ΡΠ°ΡΠΎΠ΅ Π·Π΄Π΅ΡΡ.
Π ΡΠ²ΠΎΠ΅ΠΉ Π²ΡΠΎΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΠ°ΡΠΎΠ»ΡΠ΄ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ²ΠΎΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠΊΠ»Π°ΡΡΠ½ΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° bash. ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΠΎΠ½ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² ΡΠΊΡΠΈΠΏΡΠ°Ρ bash, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ . ΠΠ°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΡΡΠ°ΡΡΡ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π² ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ Π²Π΅ΡΠΈ ΠΊΠ°ΠΊ ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΊΡΠΈΠΏΡΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠΎΠ΄ΠΎΠ² Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΠ΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π²Π·ΠΎΠΉΠ΄ΡΡ Π²ΡΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ! ΠΠΎΡΠ»Π΅ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ Π²Π°Ρ ΡΠΆΠ΅ Π½Π΅Π»ΡΠ·Ρ Π±ΡΠ΄Π΅Ρ Π½Π°Π·Π²Π°ΡΡ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠΌ. ΠΠ΅Π΄Ρ Π²Ρ Π½Π° ΠΏΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎΠ± Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΌΠ°ΡΡΠ΅ΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° bash!
ΠΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ° ΠΈ bash
bash ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠ°ΠΊ Π²Ρ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅, Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ expr. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ true, ΡΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ. ΠΡΠΈΡΠΈΠ½Π° ΠΊΡΠΎΠ΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ true ΠΈ expr ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈΡ . ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ Π² bash ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±ΡΡΡΡΠ΅Π΅. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΎΠΌΡ, ΡΡΠΎ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ true ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° «:», Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° expr — Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π²ΠΈΠ΄Π° $((…)). ΠΡΠ΄ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Ρ, ΠΎΠ½Π° ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ $(…). ΠΡΠ»ΠΈΡΠΈΠ΅ ΡΡΡ Π² ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΠΊΠΎΠ±ΠΎΠΊ. Π’Π°ΠΊ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΆΠ΅ ΠΈΡΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΡΠΎ:
#!/bin/bash
x=8 # ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ x Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 8
y=4 # ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ y Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 4
# ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ x ΠΈ y ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π² z:
z=$(($x + $y))
echo Β«Π‘ΡΠΌΠΌΠ° $x ΠΈ $y ΡΠ°Π²Π½Π° $zΒ»
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, Π²ΡΠ±ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π·Π° Π²Π°ΠΌΠΈ. ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ expr Π΄Π»Ρ Π²Π°Ρ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ ΠΈ ΠΏΡΠΈΠ²ΡΡΠ½Π΅Π΅, ΡΠ΅ΠΌ $((β¦)), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Π³ΠΎ.
bash ΡΠΌΠ΅Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅, ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ°ΡΠΊΠ° ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ. ΠΠ°ΠΆΠ΄ΠΎΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ:
ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ | ΠΠΏΠ΅ΡΠ°ΡΠΎΡ |
Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ | + |
ΠΡΡΠΈΡΠ°Π½ΠΈΠ΅ | — |
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ | * |
Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ | / |
ΠΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ | % |
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· Π²Π°Ρ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π·Π½Π°ΠΊΠΎΠΌΠΎ Ρ ΠΏΠ΅ΡΠ²ΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠΎ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΈΡΠ»ΠΎ ΡΠ°Π²Π½ΠΎΠ΅ ΠΎΡΡΠ°ΡΠΊΡ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π½Π° Π΄ΡΡΠ³ΠΎΠ΅. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² bash:
#!/bin/bash
x=5 # ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ x ΡΠ°Π²Π½ΡΠΌ 5
y=3 # ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ y ΡΠ°Π²Π½ΡΠΌ 3
# ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΡΡΠΌΠΌΡ x ΠΈ y Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ add
add=$(($x + $y))
# ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΎΡΡΡ x ΠΈ y Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ sub
sub=$(($x β $y))
# ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ x Π½Π° y ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ mul
mul=$(($x * $y))
# Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ div ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄Π΅Π»Π΅Π½ΠΈΡ x Π½Π° y
div=$(($x / $y))
# ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ x Π½Π° y ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ mod
mod=$(($x % $y))
# ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌ ΠΎΡΠ²Π΅ΡΡ
echo Β«Π‘ΡΠΌΠΌΠ° ΡΠ°Π²Π½Π°: $addΒ»
echo Β«Π Π°Π·Π½ΠΎΡΡΡ ΡΠ°Π²Π½Π° $subΒ»
echo Β«ΠΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ $mulΒ»
echo Β«Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π΄Π΅Π»Π΅Π½ΠΈΡ $divΒ»
echo Β«ΠΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ $modΒ»
ΠΠΎΠ΄, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ expr. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ add=$(($x + $y)) ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ add=$(expr $x + $y) ΠΈΠ»ΠΈ add=`expr $x + $y`.
Π§ΡΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
Π ΡΠ΅ΠΏΠ΅ΡΡ — ΡΠ°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅. ΠΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ²ΠΎΠΉ ΡΠΊΡΠΈΠΏΡ ΡΠ°ΠΊ, ΡΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ Π½ΠΈΠΌ. ΠΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ — read. ΠΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π² bash ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΡΠΎΡ ΡΠ°Π½ΡΡΡΠ°Ρ Π²Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
#!/bin/bash
# ΡΠΏΡΠΎΡΠΈΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΅Π³ΠΎ ΠΈΠΌΡ ΠΈ ΠΏΠΎΠ·Π΄ΠΎΡΠΎΠ²Π°ΡΡΡΡ Ρ Π½ΠΈΠΌ
echo -n βΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ²ΠΎΠ΅ ΠΈΠΌΡ: β
read user_name
echo βΠΡΠΈΠ²Π΅Ρ $user_name!β
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π·Π΄Π΅ΡΡ — ΡΡΠΎ user_name. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π½Π°Π·Π²Π°ΡΡ Π΅Π΅ ΠΊΠ°ΠΊ ΡΠ³ΠΎΠ΄Π½ΠΎ. read ΠΏΡΠ΅ΡΠ²Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠ° ΠΈ Π±ΡΠ΄Π΅Ρ ΠΆΠ΄Π°ΡΡ, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²Π΅Π΄Π΅Ρ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈ Π½Π°ΠΆΠΌΠ΅Ρ ΠΊΠ»Π°Π²ΠΈΡΡ ENTER. ΠΡΠ»ΠΈ ΠΊΠ»Π°Π²ΠΈΡΠ° ENTER Π±ΡΠ»Π° Π½Π°ΠΆΠ°ΡΠ° Π±Π΅Π· Π²Π²ΠΎΠ΄Π° ΡΠ΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ, read Π·Π°ΠΏΡΡΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ΄Π°. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΡΠΎΡ ΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ
ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π²Π²ΠΎΠ΄ΠΈΡ Π»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ:
#!/bin/bash
# ΡΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅
echo -n Β«ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ: Β»
read user_name
# ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
if [ -z Β«$user_nameΒ» ]; then
echo Β«ΠΡ Π½Π΅ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΌΠ½Π΅ ΡΠ²ΠΎΠ΅ ΠΈΠΌΡ!Β»
exit
fi
echo Β«ΠΡΠΈΠ²Π΅Ρ $user_name!Β»
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠ°Π» ENTER ΠΈ Π½Π΅ Π²Π²Π΅Π» ΠΏΡΠΈ ΡΡΠΎΠΌ Π½ΠΈΡΠ΅Π³ΠΎ, Π½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π°ΠΏΠΈΡΠ΅Ρ ΠΎΠ± ΡΡΠΎΠΌ ΠΈ Π·Π°Π²Π΅ΡΡΠΈΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½Π° Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅. ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²Π΅ΡΡΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄Π°Π½Π½ΡΠ΅.
Π€ΡΠ½ΠΊΡΠΈΠΈ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π΅Π»Π°Π΅Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΏΡΠΎΡΠ΅. ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΠΊΡΡΠΊΠΈ. Π€ΡΠ½ΠΊΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ ΠΏΠΎΠΆΠ΅Π»Π°Π΅ΡΠ΅. ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ, Ρ ΠΏΡΠΈΠ²Π΅Π΄Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΊΡΠΈΠΏΡΠ°, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ:
#!/bin/bash
# ΡΡΠ½ΠΊΡΠΈΡ hello() ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
hello()
{
echo Β«ΠΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ hello()Β»
}
echo Β«ΠΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ hello()β¦Β»
hello
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠ΄ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΡΡΠ΅. Π€ΡΠ½ΠΊΡΠΈΡ hello() Π² Π½Π΅ΠΌ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ — ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. ΠΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ΅ΡΠ°ΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ. ΠΡΡΠ΅ ΠΌΡ Π²ΡΠ·Π²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ hello(), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡΠΎΠΊΡ:
hello
ΠΠΎΠ³Π΄Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΡΠ° ΡΡΡΠΎΠΊΠ°, bash ΠΈΡΠ΅Ρ ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ ΡΡΡΠΎΠΊΠΈ hello(). ΠΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΡ Π΅Π³ΠΎ Π² Π½Π°ΡΠ°Π»Π΅ ΡΠ°ΠΉΠ»Π° ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅. Π€ΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΠΈΠΌΠ΅Π½ΠΈ, ΡΡΠΎ ΠΌΡ ΠΈ Π²ΠΈΠ΄Π΅Π»ΠΈ Π²ΡΡΠ΅. ΠΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π΅Π΅, ΠΏΡΠΎΡΡΠΎ ΡΠΊΠ°Π·Π°Π² ΠΈΠΌΡ_ΡΡΠ½ΠΊΡΠΈΠΈ(), ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π²ΡΡΠ΅, ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ²Π½ΡΠΌ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π΅Π΅ ΡΠ°ΠΊ: functionΒ ΠΈΠΌΡ_ΡΡΠ½ΠΊΡΠΈΠΈ(). ΠΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ hello() :
function hello()
{
echo Β«ΠΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ hello()Β»
}
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠ΅ΡΡ Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΡΡΡΠ΅ ΠΎΡΠΊΡΡΠ²Π°ΡΡΡΡ ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡΡΡ ΡΠΊΠΎΠ±ΠΊΠΈ: «()», Π·Π° Π½ΠΈΠΌΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ°ΡΠ° ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ: Β«{…}Β», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π²Π΅ΡΡ ΠΊΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ Π² ΡΡΠΈ ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ. Π€ΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Π΄ΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π°. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎ Π΅Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ:
#!/bin/bash
echo Β«ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ hello() β¦Β»
hello
# ΡΡΠ½ΠΊΡΠΈΡ hello() ΠΏΡΠΎΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
hello()
{
echo Β«ΠΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΠ²Π΅Ρ ()Β»
}
ΠΠΎΡ ΡΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ:
$ ./hello.sh
ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΠ²Π΅Ρ () …
./hello.sh: hello: command not found
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΡΡΠΎΠΈΡ Π²ΡΠ΅Π³Π΄Π° ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Π²Π°ΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π½Π°ΡΠ°Π»Π΅ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ:
#!/bin/bash
# admin.sh β ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°
# ΡΡΠ½ΠΊΡΠΈΡ new_user () ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΡ ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
new_user()
{
echo Β«ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΡΡ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ …Β»
sleep 2
# Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ adduser
adduser
}
echo Β«1. ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΒ»
echo Β«2. ΠΡΡ
ΠΎΠ΄Β»
echo Β«Π£ΠΊΠ°ΠΆΠΈΡΠ΅, ΡΡΠΎ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ:»
read choice
case $choice in
1) new_user # Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ new_user()
;;
*) exit
;;
esac
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ ΡΠΊΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΠ°Π» ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ ΠΈΠ·-ΠΏΠΎΠ΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ root, Ρ.Β ΠΊ. ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° adduser Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ (Ρ ΠΎΡΡ ΠΎΠ½ ΠΈ ΠΊΡΠ°ΡΠΎΠΊ) ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠ΅ΡΠ΅Ρ Π²Π°Ρ ΡΠΈΠ³Π½Π°Π»ΠΎΠ²
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ Π² bash ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ trap Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ° ΡΠΈΠ³Π½Π°Π»ΠΎΠ² Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ . ΠΡΠΎ Ρ ΠΎΡΠΎΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΠ·ΡΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½Π°ΠΆΠΌΠ΅Ρ CTRL-C — ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ ΡΠΈΠ³Π½Π°Π» interrupt (SIGINT, signal (7)), ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π²Π΅ΡΡΠΈΡ Π΅Π΅. trap ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΡΡ ΡΡΠΎΡ ΡΠΈΠ³Π½Π°Π», ΡΡΠΎ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π»ΠΈΠ±ΠΎ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ°ΠΊΠΎΠΉ:
trap action signal
ΠΠ΄Π΅ΡΡ:
action — ΡΠΎ, ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π΄Π΅Π»Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠΈΠ³Π½Π°Π» ΠΏΠΎΠ»ΡΡΠ΅Π½;
signal — ΡΠΈΠ³Π½Π°Π», Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΎΠΈΡ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ.
Π‘ΠΏΠΈΡΠΎΠΊ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ trap -l . ΠΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² Π² ΡΠ²ΠΎΠΈΡ ΡΠΊΡΠΈΠΏΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΡΡΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΡΠΈ Π±ΡΠΊΠ²Ρ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»Π°, Ρ. Π΅. SIG. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΠ³Π½Π°Π» ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΡΠΎ — SIGINT. Π Π²Π°ΡΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡΠ΅, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎΡΡΠΎ INT. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠΌΠ΅Ρ ΡΠΈΠ³Π½Π°Π»Π°, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΡΡΠ΄ΠΎΠΌ Ρ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Π° SIGINT — 2. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ:
#!/bin/bash
# ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ trap
# ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Π΅ΠΌ Π½Π°ΠΆΠ°ΡΠΈΠ΅ CTRL-C ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ sorry()
trap sorry INT
# function sorry() prints a message
sorry()
{
echo Β«ΠΠ·Π²ΠΈΠ½ΠΈ ΠΌΠ΅Π½Ρ, ΠΡΠΉΠ². Π― Π½Π΅ ΠΌΠΎΠ³Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡΒ»
sleep 3
}
# ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΎΡΡΡΠ΅Ρ ΠΎΡ 10 Π΄ΠΎ 1:
echo Β«ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡΒ»
for i in 10 9 8 7 6 5 4 3 2 1; do
echo Β«ΠΡΡΠ°Π»ΠΎΡΡ $i ΡΠ΅ΠΊΡΠ½Π΄ Π΄ΠΎ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ…Β»
sleep 1
done
echo Β«ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ!Β»
ΠΠ°Π±Π΅ΡΠΈΡΠ΅ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Π²Π΅ΡΡΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΎΡΡΡΠ΅Ρ, Π½Π°ΠΆΠΌΠΈΡΠ΅ CTRL-C. ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠΈΠ³Π½Π°Π» ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ — SIGINT. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡΠΈΠ³Π½Π°Π» Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ΅Π½ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ trap, ΠΊΠΎΡΠΎΡΠ°Ρ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ sorry(). ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΡΡΠ°Π²ΠΈΡΡ trap ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠ³Π½Π°Π», ΡΠΊΠ°Π·Π°Π² ΡΠΈΠΌΠ²ΠΎΠ» ΠΊΠ°Π²ΡΡΠ΅ΠΊ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. Π’Π°ΠΊΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π»ΠΎΠ²ΡΡΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΡΠ΅: «-«. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
# Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ sorry(), Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΡΠΈΠ³Π½Π°Π» SIGINT
trap sorry INT
# ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ²ΡΡΠΊΠΈ
trap β INT
# Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΈΠ³Π½Π°Π»Π° SIGINT
trap β INT
ΠΡΠ»ΠΈ Π²Ρ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΡΠ΅ Π»ΠΎΠ²ΡΡΠΊΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ — ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΈΠ³Π½Π°Π»Π° ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΡΡΡ Π΅Π΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ½Π° Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ. ΠΠΎΠ³Π΄Π° Π²Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅ trap Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΈΠ³Π½Π°Π»Π° — ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ. ΠΠΈΡΠ΅Π³ΠΎ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΈΠ³Π½ΠΎΡΠΈΡΡΡ ΡΠΈΠ³Π½Π°Π».
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π ΠΈ ΠΠΠ
ΠΡ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅Ρ ΠΆΠ΅ Π·Π°Π΄Π°Ρ Π΅ΡΡΡ Π΅ΡΠ΅ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π°. ΠΡΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π — «&&» ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ «ΠΠΠ» — Β« || Β». ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅_1 && Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅_2
Π‘Π½Π°ΡΠ°Π»Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠΎΡΡΠ΅Π΅ ΡΠ»Π΅Π²Π°, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ ΠΈΡΡΠΈΠ½Π½ΠΎ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠΎΡΡΠ΅Π΅ ΡΠΏΡΠ°Π²Π°. ΠΡΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅_1 Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΠΠΠ¬, ΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅_2 Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ. ΠΡΠ»ΠΈ ΠΎΠ±Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΠ‘Π’ΠΠΠ£, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄. ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ ΠΈΡΡΠΈΠ½Π½ΠΎ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΈΡΠ°Π΅Ρ Π»ΠΎΠΆΠ½ΡΠΌ Π² ΡΠ΅Π»ΠΎΠΌ. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊ:
Π΅ΡΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅_1 ΠΈΡΡΠΈΠ½Π½ΠΎ Π Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅_2 ΠΈΡΡΠΈΠ½Π½ΠΎ, ΡΠΎΠ³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡ…
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°: ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±ΡΠ»Π΅Π²ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΠ‘Π’ΠΠΠ ΠΈ ΠΠΠΠ¬ (True ΠΈ False), bash Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ 0 ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ False (ΠΠΎΠΆΡ), Π° 1 — True (ΠΡΡΠΈΠ½Π°). Π bash Π²ΡΠ΅ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. Π‘Π²ΡΠ·Π°Π½ΠΎ ΡΡΠΎ Ρ ΡΠ°ΠΊΠΎΠΉ Π²Π΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (ΡΠΌ. Π½ΠΈΠΆΠ΅).
ΠΠ± ΡΡΠΎΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ²ΠΎΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²!
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
#!/bin/bash
x=5
y=10
if [ «$x» -eq 5 ] && [ «$y» -eq 10 ]; then
echo Β«ΠΠ±Π° ΡΡΠ»ΠΎΠ²ΠΈΡ Π²Π΅ΡΠ½ΡΒ»
else
echo Β«Π£ΡΠ»ΠΎΠ²ΠΈΡ Π½Π΅ Π²Π΅ΡΠ½ΡΒ»
fi
ΠΠ΄Π΅ΡΡ ΠΌΡ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Ρ ΠΈ Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π²Π΅ΡΠ½Ρ. ΠΡΠ»ΠΈ Π²Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ Ρ = 5 Π½Π° Ρ = 12, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ½ΠΎΠ²Π° Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΠ½Π° Π²ΡΠ΄Π°ΡΡ ΡΡΠ°Π·Ρ Β«Π£ΡΠ»ΠΎΠ²ΠΈΡ Π½Π΅ Π²Π΅ΡΠ½ΡΒ».
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΠΠ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. Π Π°Π·Π½ΠΈΡΠ° Π»ΠΈΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ»Π΅Π²Π°. ΠΡΠ»ΠΈ ΡΡΠΎ ΡΠ°ΠΊ — ΠΎΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ:
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅_1 || Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅_2
ΠΠ°Π½Π½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄Π΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
Π΅ΡΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅_1 ΠΈΡΡΠΈΠ½Π½ΠΎ ΠΠΠ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅_2 ΠΈΡΡΠΈΠ½Π½ΠΎ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ …
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΡΠΈΠ½Π½ΠΎ:
#!/bin/bash
x=3
y=2
if [ «$x» -eq 5 ] || [ «$y» -eq 2 ]; then
echo Β«ΠΠ΄Π½ΠΎ ΠΈΠ· ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΠΈΡΡΠΈΠ½Π½ΠΎΒ»
else
echo Β«ΠΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΡΠ»ΠΎΠ²ΠΈΠΉ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΡΠΈΠ½Π½ΡΠΌΒ»
fi
ΠΠ΄Π΅ΡΡ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΡΠΈΠ½Π½ΠΎ. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΡΠΈΠ½Π½ΡΠΌ.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° if Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΡΠ΅ΠΌ Π²Π°ΡΠΈΠ°Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π ΠΈ ΠΠΠ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ if. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΡΠΎΡ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π», Π½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° if:
#!/bin/bash
x=5
y=10
if [ «$x» -eq 5 ]; then
if [ «$y» -eq 10 ]; then
echo Β«ΠΠ±Π° ΡΡΠ»ΠΎΠ²ΠΈΡ Π²Π΅ΡΠ½ΡΒ»
else
echo Β«ΠΠ±Π° ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π΅Π²Π΅ΡΠ½ΡΒ»
fi
fi
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠ΅Π½Π΅Π΅ Π½Π°Π³Π»ΡΠ΄Π΅Π½ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΡ ΡΡΠΈΠ»ΠΈΠΉ. ΠΠΎ Ρ Π²Π°Ρ ΠΎΡΡΠ°Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π»Ρ ΠΈΠ·Π±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π±Ρ ΠΎΡ Π²ΡΠ΅Ρ ΡΡΠΈΡ ΡΡΡΠ΄Π½ΠΎΡΡΠ΅ΠΉ ΠΏΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π ΠΈ ΠΠΠ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ ΡΠΆΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² Linux Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Ρ. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠΌ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠΎΠ·ΡΠΌΠ΅ΠΌ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΊΠΎΠΌΠ°Π½Π΄Ρ more. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠΊΠ°ΠΆΠ΅ΡΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, ΠΎΠ½Π° Π²ΡΠ΄Π°ΡΡ ΠΊΡΠ°ΡΠΊΡΡ ΡΠΏΡΠ°Π²ΠΊΡ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π²Π°ΡΠΈ ΡΠΊΡΠΈΠΏΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π²ΠΈΠ΄Π° $#. Π Π½Π΅ΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
$ ΡΡΠΎ-ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ
ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $# Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ. ΠΠ»Ρ Π΄Π²ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ Π΄Π²ΡΠΌ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ Π·Π½Π°ΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ (Π²ΠΊΠ»ΡΡΠ°Ρ Π΄Π°ΠΆΠ΅ ΠΈΠΌΡ ΡΠΊΡΠΈΠΏΡΠ°!!!) ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. Π’Π°ΠΊ, ΠΈΠΌΡ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠΎ-ΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $0. ΠΡΠ³ΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $1. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΎ 9 ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π½Π°ΡΠΈΠ½Π°Ρ Ρ $0 (ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΠ΅Π³ΠΎ ΠΈΠΌΡ ΡΠΊΡΠΈΠΏΡΠ°), Π° Π·Π°ΡΠ΅ΠΌ $1-$9, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
#!/bin/bash
# ΡΠΊΡΠΈΠΏΡ, ΠΏΠ΅ΡΠ°ΡΠ°ΡΡΠΈΠΉ ΡΠ²ΠΎΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ
# ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ Π»ΠΈ ΡΠΊΡΠΈΠΏΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ:
if [ «$#» -ne 1 ]; then
echo Β«ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: $0 <ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ>Β»
fi
echo Β«ΠΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ — $1Β»
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ ΡΠΊΡΠΈΠΏΡ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠΊΠ°ΠΆΠ΅ΡΠ΅ Π΅ΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² — Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ ΡΠΏΡΠ°Π²ΠΎΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠΊΠ°Π·Π°Π½ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ — ΠΎΠ½ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² Π½Π°Ρ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ²Π΅Π΄Π΅Ρ Π΅Π³ΠΎ Π½Π° ΡΠΊΡΠ°Π½. ΠΠ°ΠΏΠΎΠΌΠΈΠ½Π°Ρ, ΡΡΠΎ $0 ΡΡΠΎ ΠΈΠΌΡ ΡΠΊΡΠΈΠΏΡΠ°. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ. ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΡΠΎΠΊΠ° Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ — $1.
Π Π°Π±ΠΎΡΠ° Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ
ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ Π²Π°ΠΌ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ. ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΡΠ°ΠΉΠ», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ ΡΠ°Π½ΡΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠΌ Π΄Π°Π½Π½ΡΠ΅ Π»ΠΈΠ±ΠΎ ΡΡΠΎ-ΡΠΎ Π΅ΡΠ΅. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠ° ΡΠΊΡΠΈΠΏΡΠ° Π±ΡΠ΄Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°, ΡΡΠΎΡ ΡΠ°ΠΉΠ» Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ. ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π΄Π°ΡΡ Π΅Π³ΠΎ ΠΈΠΌΡ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΡΡ ΠΊΡΠΎΠ΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΉΠ», ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΉ Π²Π°ΠΌΠΈ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ Π² ΡΠΎΠΉ ΠΆΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ, Π΅ΡΠ»ΠΈ ΠΈΡ ΠΈΠΌΠ΅Π½Π° ΡΠΎΠ²ΠΏΠ°Π΄ΡΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ» Β«$$Β» ΡΠΈΠΌΠ²ΠΎΠ», Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ ΠΏΡΠ΅ΡΠΈΠΊΡ, Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ ΡΡΡΡΠΈΠΊΡ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ hello. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π½Π°ΡΠΈΠΌ ΡΠΊΡΠΈΠΏΡΠΎΠΌ, ΡΠΆΠ΅ Π΅ΡΡΡ ΡΠ°ΠΉΠ» Ρ ΡΠ°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ hello.$$ ΠΈΠ»ΠΈ $$hello, Π²Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΡΠ°ΠΉΠ» Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
$ touch hello
$ ls
hello
$ touch hello.$$
$ ls
hello hello.689
ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ ΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΈΠΌΡ Π²Π°ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°: Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $$ ΠΎΠ±ΡΡΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΉ PID. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° Π΄Π»Ρ Π²Π½ΠΎΠ²Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠΎΠ΄Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΡΠΈΡΠ»ΠΎ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΄Π°ΡΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠΈΠ»Π° ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, man-ΡΡΡΠ°Π½ΠΈΡΠ° grep Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ grep Π²Π΅ΡΠ½Π΅Ρ 0, Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ Π½Π°ΠΉΠ΄Π΅Π½, ΠΈ 1, Π΅ΡΠ»ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ. ΠΠΎΡΠ΅ΠΌΡ Π½Π°Ρ ΡΠ°ΠΊ Π²ΠΎΠ»Π½ΡΡΡ ΡΡΠΈ ΠΊΠΎΠ΄Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ? ΠΠΎ ΡΠ°Π·Π½ΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ. ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ — Π΅ΡΡΡ Π»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅? ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ΄Π΅Π»Π°ΡΡ — ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΠΈΠ΄Π°: grep ΠΈΠΌΡ_ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ /etc/passwd . ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ — vasya:
$ grep vasya /etc/passwd
$
ΠΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π²ΡΠ²Π΅Π»ΠΎΡΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ grep Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»Π° Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎ Π΄Π»Ρ Π½Π°Ρ Π±ΡΠ»ΠΎ Π±Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΡΡΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΡΡΠΎΠΌ. ΠΡΠΎ ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ½ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ $? . ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°:
#!/bin/bash
# ΠΈΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ vasya Π² /etc/passwd,
# Π²Π΅ΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π² /dev/null
grep vasya /etc/passwd > /dev/null 2>&1
# ΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅ΠΌ ΠΏΠΎ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²Π°ΠΌ:
if [ «$? -eq 0 ]; then
echo Β«ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ vasya Π½Π°ΠΉΠ΄Π΅Π½Β»
exit
else
echo Β«ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ vasya Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Β»
fi
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡ, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ grep. ΠΡΠ»ΠΈ ΠΎΠ½ ΡΠ°Π²Π΅Π½ 0, Π·Π½Π°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΉΠ΄Π΅Π½ ΠΈ ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΊΡΠΈΠΏΡ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΉΡΠΈ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΎ ΠΌΠ΅ΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π²Ρ ΡΠ°ΠΌΠΈ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ ΠΊΠΎΠ΄Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ.
ΠΡΠ»ΠΈ Π²Π°Ρ ΠΎΠ·Π°Π΄Π°ΡΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π²ΠΈΠ΄Π° 2>&1, ΡΡΡ Π²ΡΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. Π Linux ΡΡΠΈΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². 0 — ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ°), 1 ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΌΠΎΠ½ΠΈΡΠΎΡ) ΠΈ 2 — Π²ΡΠ²ΠΎΠ΄ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΌΠΎΠ½ΠΈΡΠΎΡ). ΠΠ΅ΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ΄Π΅Ρ Π² ΡΠ°ΠΉΠ» Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠΌ 1, Π»ΡΠ±ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π² ΡΠ°ΠΉΠ» Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠΌ 2. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΠΏΠΎΡΠ²Π»ΡΠ»ΠΈΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅, ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΡΡΠ΅ Π΅Π³ΠΎ Π² /dev/null. ΠΠΎ ΡΡΠΎ Π½Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡ Π²ΡΠ²ΠΎΠ΄ Π½Π° ΡΠΊΡΠ°Π½ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠΌΠ°ΡΠ½Π΅Π³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π²Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ:
$ ls /root
ls: /root: Permission denied
$ ls /root 2> /dev/null
$
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π²ΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°Π· ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π½Π΅ Π±ΡΠ»Π° Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½Π°. ΠΡΠ΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ 1. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ Π΅ΡΡΡ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π»Π° ΠΌΠΎΠ»ΡΠ°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ Π² /dev/null ΠΈ Π΅Π³ΠΎ. Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ — Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² Π½Π΅Π΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
$ ls /root > /dev/null 2>&1
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ²ΠΎΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π² /dev/null, Ρ.Β Π΅. Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠΎΠ»ΡΠ°, ΡΡΠΎ Π½Π°ΠΌ ΠΈ Π½ΡΠΆΠ½ΠΎ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°: Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊ:
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π²ΠΈΠ΄Π° 2>&1 ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΠ²ΠΎΠ΄ ΠΎΡΠΈΠ±ΠΎΠΊ (Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ 2) Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ (Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ 1). ΠΠ½Π°ΠΊ Β«Π·Π°Π³ΠΎΠ³ΡΠ»ΠΈΠ½ΡΒ» — & — ΡΡΡ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΠ½ΠΈΡΡ bash, ΡΡΠΎ Π²Ρ ΠΈΠΌΠ΅Π΅ΡΠ΅ Π² Π²ΠΈΠ΄Ρ Π½Π΅ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ 1, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΉΠ» Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠΌ 1, Ρ.Β Π΅. ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄. ΠΡΠ»ΠΈ Π²Ρ ΡΠΊΠ°ΠΆΠ΅ΡΠ΅ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅:
$ ΠΊΠΎΠΌΠ°Π½Π΄Π° 2>1
ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠΎΠΉΠ΄Π΅Ρ Π² ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ 1. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ 2>&1 ΠΌΡ Β«ΡΡΠ΅ΠΏΠ»ΡΠ΅ΠΌΒ» Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π²ΡΠ²ΠΎΠ΄ ΠΎΡΠΈΠ±ΠΎΠΊ Π²ΠΌΠ΅ΡΡΠ΅. Π ΠΏΠ΅ΡΠ²ΡΠΌ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ (ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ > Π² ΠΊΠΎΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅) ΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π²Π΅ΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² /dev/null. Π§ΡΠΎΠ±Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΠ±ΡΠ°Π² 2>&1 ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΠ² Π΅Π΅.
Π ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π²Π°Ρ ΡΠΊΡΠΈΠΏΡ ΡΠΎΠΆΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π» ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ Π²ΡΡ ΠΎΠ΄Π΅? ΠΠΎΠΌΠ°Π½Π΄Π° exit ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ — ΡΠΎΡ ΡΠ°ΠΌΡΠΉ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ. ΠΠ±ΡΡΠ½ΠΎ ΡΠΈΡΠ»ΠΎ 0 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ. Π§ΠΈΡΠ»ΠΎ, ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ΅ ΠΎΡ Π½ΡΠ»Ρ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ°. ΠΠ°ΠΊΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ — ΡΠ΅ΡΠ°Π΅Ρ ΡΠ°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡ. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
#!/bin/bash
if [ -f «/etc/passwd» ]; then
echo Β«Π€Π°ΠΉΠ» passwd ΡΡΡΠ΅ΡΡΠ²ΡΠ΅ΡΒ»
exit 0
else
echo Β«ΠΠ΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°Β»
exit 1
fi
ΠΠ°Π΄Π°Π²Π°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ, Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ Π²Π°Ρ ΡΠΊΡΠΈΠΏΡ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ.
ΠΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡ Π²Π°ΡΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π½Π° bash
ΠΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π²Π°ΡΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π²Π°ΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΠΎΡΡΠ°Π²Π°Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠΌΠΈ. Π’Π΅ΡΠΌΠΈΠ½ Β«ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡΒ» ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Π°Ρ ΡΠΊΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ΄ Linux, ΡΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π΄ΡΡΠ³ΠΎΠΉ Unix-ΡΠΈΡΡΠ΅ΠΌΠ΅ Ρ ΠΌΠ°Π»ΡΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π±Π΅Π· Π½ΠΈΡ . Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΠΎΠ³ΠΎ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° Π²ΠΎΠΏΡΠΎΡ: «ΠΡΠ΄Π΅Ρ Π»ΠΈ ΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΡΡΡΠΏΠ½Π° Π½Π° Π΄ΡΡΠ³ΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ Unix?» (ΠΈ ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ — Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΠΎΠ½Π° ΡΠ°ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ Π½Π° Linux — ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².). ΠΠΎΠΏΡΡΡΠΈΠΌ, Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ foo, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π° Linux ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ echo, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΠΌΠ΅ΡΡΠΎ echo Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π΅Π΅. ΠΠΎ Π΅ΡΠ»ΠΈ Π²Π°Ρ ΡΠΊΡΠΈΠΏΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π³Π΄Π΅ Π½Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ foo, ΠΎΠ½ Π½Π°ΡΠ½Π΅Ρ Π²ΡΠ΄Π°Π²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ . ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ bash ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ VAR = $(ps) Π΄Π΅Π»Π°Π΅Ρ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ VAR = `ps`, Π½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠ°ΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡΠ΅ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Bourne shell (sh), ΠΏΡΠΈΠ·Π½Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠΊΡΠΈΠΏΡΡ, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» README, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎ Π»ΡΠ±ΡΡ ΡΡΡΠΏΡΠΈΠ·Π°Ρ , Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠΊΡΠΈΠΏΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΡΡ Π½Π° ΡΠ°ΠΊΠΎΠΉ-ΡΠΎ Π²Π΅ΡΡΠΈΠΈ bash. ΠΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (ΠΈ ΠΊΠ°ΠΊΠΈΡ Π²Π΅ΡΡΠΈΠΉ) Π±ΡΠ΄ΡΡ Π½ΡΠΆΠ½Ρ ΡΠΊΡΠΈΠΏΡΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°: ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π°Π»ΠΈΡΠΈΡ Π² ΡΠΊΡΠΈΠΏΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ Π΄Π»Ρ bash Π² ALT Linux Π΅ΡΡΡ ΠΏΠ°ΠΊΠ΅Ρ checkbashisms, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π·ΡΡ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° devscripts Debian.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΈΡΠ»Π° ΠΏΠΎΡΠ° Π·Π°Π²Π΅ΡΡΠΈΡΡ ΡΡΠΎ ΠΊΡΠ°ΡΠΊΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π½Π° bash. ΠΠ΄Π½Π°ΠΊΠΎ Π²Π°ΡΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΌΡ ΡΠΌΠ΅Π½ΠΈΡ Π΅ΡΠ΅ Π½Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΎ. Π ΡΠΎΠΆΠ΅ Π²ΡΠ΅ΠΌΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ ΡΠΊΡΠΈΠΏΡΡ ΠΈ ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅. ΠΡΠ»ΠΈ Π²Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ ΠΎΡΠΈΡΠ΅ ΡΡΠ°ΡΡ ΠΌΠ°ΡΡΠ΅ΡΠΎΠΌ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π½Π° bash, Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΡΠΈ ΠΊΠ½ΠΈΠ³Ρ Β«Learning the bash shellΒ» (ΠΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ bash), 2-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π° O’Reilly & Associates, Inc.
Π‘ΠΊΡΠΈΠΏΡΡ Π½Π° bash ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ ΡΡΠΎ-ΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΠ΅, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½ΡΠΉ ΡΠ·ΡΠΊ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ C ΠΈΠ»ΠΈ Perl. Π£Π΄Π°ΡΠΈ!
Bash Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ . Π§Π°ΡΡΡ 2.
ΠΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΡΠ½ΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² bash
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΠΊΡΠΈΠΏΡΠ° ΠΈ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ bash.
Π ΠΏΡΠΎΡΡΠΎΠΌ ΡΠΊΡΠΈΠΏΡΠ΅ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠΈ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Β«$1Β«, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΠΊΡΠΈΠΏΡΠ°. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Β«$2Β», Β«$3Β» ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊΠΎ Π²ΡΠΎΡΠΎΠΌΡ, ΡΡΠ΅ΡΡΠ΅ΠΌΡβ¦ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
#!/bin/bash
echo "ΠΠΌΡ ΡΠΊΡΠΈΠΏΡΠ° β $0"
echo "ΠΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ: $1"
echo "ΠΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ: ${2}"
echo "Π‘Π΅ΠΌΠ½Π°Π΄ΡΠ°ΡΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ: ${17}"
echo "ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²: $#"
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«$0Β» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΈΠΌΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠ΅Π½ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Β«$#Β» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ ΡΠΊΡΠΈΠΏΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΎΡΡΠΎΡΡΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΡΡΡ (Ρ $0 ΠΏΠΎ $9). ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΏΠΎΠ·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ Ρ ΡΠ°Π·Π½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΠ½ΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡΠ»Π°ΡΡΡΡ ΡΡΠ°Π·Ρ Π½Π° Π²ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² bash Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Β«$@Β«, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΡΠΈ ΡΠ°ΡΡΠΊΠ°Π·Π΅ ΠΎ ΡΠΈΠΊΠ»Π°Ρ ΡΠΎ ΡΡΠ΅ΡΡΠΈΠΊΠΎΠΌ (ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Β«forΒ»).
Π£ΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ bash
ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π½ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π»ΠΈ Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΡ ΡΠ·ΡΠΊΠ°Ρ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π‘ΠΈ, ΠΠ°ΡΠΊΠ°Π»Ρ, ΠΠ΅ΡΠ» ΠΈ ΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ , Π²Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π½Π°ΠΊΠΎΠΌΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π²ΡΠΎΠ΄Π΅ Β«ifΒ», Β«forΒ» ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. Π bash ΡΠΎΠΆΠ΅ Π΅ΡΡΡ Π²ΡΠ΅ ΡΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ. Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π°Ρ ΠΏΠΎΡΠΎΠ±ΠΈΡ Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Ρ Π²Π°Ρ Ρ Π½ΠΈΠΌΠΈ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΡ ΡΠ΅ΠΌ ΠΎΠ½ΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π½ΡΡΠ΅ Π½Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π»ΠΈ β Π½Π΅ Π²ΠΎΠ»Π½ΡΠΉΡΠ΅ΡΡ. ΠΠ°ΡΠ΅ΡΠΈΠ°Π» Π±ΡΠ΄Π΅Ρ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ, ΡΠ°ΠΊ ΡΡΠΎ Π΄Π°ΠΆΠ΅ Π½ΠΎΠ²ΠΈΡΠΎΠΊ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ Π²ΡΠ±ΠΎΡΠ° Β«ifΒ»
ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π½ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π»ΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ, ΡΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π½Π°ΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠΈΠ»ΠΈΠΉ ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π΄Π²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΠΏΠ΅ΡΠ²ΡΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ. Π Π²ΡΠ΅ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π² Π‘ΠΈ Π½Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² stat() Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΡΡΠ½ΡΡ. ΠΠΎ Π² bash Π΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΠΎΡΡΠΎΠΌΡ ΡΠ·Π½Π°ΡΡ Β«Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π»ΠΈ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ» /tmp/myfileΒ» Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΠΊ ΠΈ ΡΠ·Π½Π°ΡΡ Β«ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄ΠΈΡ Π»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ βmyvarβ 4Β».
ΠΡΠΈΠ²ΠΎΠΆΡ ΡΠΏΠΈΡΠΎΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΡΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅ΠΌΡΡ Π² bash ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ
Π€Π°ΠΉΠ»Ρ
- -a file
- ΠΈΡΡΠΈΠ½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ.
- -d file
- ΠΈΡΡΠΈΠ½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠ΅ΠΉ.
- -f file
- ΠΈΡΡΠΈΠ½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ.
- -r file
- ΠΈΡΡΠΈΠ½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ.
- -s file
- ΠΈΡΡΠΈΠ½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ 0.
- -w file
- ΠΈΡΡΠΈΠ½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ.
- -x file
- ΠΈΡΡΠΈΠ½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ.
- file1 -nt file2
- ΠΈΡΡΠΈΠ½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» file1 Π½ΠΎΠ²Π΅Π΅ ΡΠ΅ΠΌ file2 ΠΈΠ»ΠΈ file1 (Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ) ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π° file2 Π½Π΅Ρ.
- file1 -ot file2
- ΠΈΡΡΠΈΠ½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» file1 ΡΡΠ°ΡΡΠ΅ ΡΠ΅ΠΌ file2 ΠΈΠ»ΠΈ file2 ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π° file1 Π½Π΅Ρ.
- file1 -ef file2
- ΠΈΡΡΠΈΠ½Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΎΠ±Π° ΡΠ°ΠΉΠ»Π° ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΄.
Π‘ΡΡΠΎΠΊΠΈ
- -z string
- ΠΈΡΡΠΈΠ½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ Π½ΡΠ»Π΅Π²ΡΡ Π΄Π»ΠΈΠ½Ρ.
- -n string
- ΠΈΡΡΠΈΠ½Π½ΠΎ Π΅ΡΠ»ΠΈ Π΄Π»ΠΈΠ½Π° ΡΡΡΠΎΠΊΠΈ Π½Π΅ Π½ΡΠ»Π΅Π²Π°Ρ.
- string1 = string2
- ΠΈΡΡΠΈΠ½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΠΈ ΡΠ°Π²Π½Ρ.
- string1 != string2
- ΠΈΡΡΠΈΠ½Π½ΠΎ Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠ°Π²Π½Ρ.
- string1 < string2
- ΠΈΡΡΠΈΠ½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° 1 ΡΡΠΎΠΈΡ Π² Π°Π»ΡΠ°Π²ΠΈΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΡΠΎΠΊΠΎΠΉ 2.
- string1 > string2
- ΠΈΡΡΠΈΠ½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° 1 ΡΡΠΎΠΈΡ Π² Π°Π»ΡΠ°Π²ΠΈΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠΎΠΊΠΈ 2.
Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Β«ifΒ»:
if [ -z "$myvar" ]
then
echo "ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ 'myvar' Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°."
fi
ΠΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π²ΡΡΠΈΡΠ»ΡΡΡ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎΡΡΠ΅Π΅ Π² Π½ΠΈΡ (ΡΡΠΎ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ bash β test). ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ β 1 ΠΈΠ»ΠΈ 0 Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π΅Ρ. Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ Β«ΠΈΒ» ΠΈΠ»ΠΈ Β«ΠΈΠ»ΠΈΒ«. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠΏΡΠ°Π²ΠΊΠΈ help test.
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΎΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΄Π΅Π»Π°Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. ΠΠ±Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ:
if [ "$myvar" -eq 3 ]
then
echo "myvar ΡΠ°Π²Π½ΠΎ 3"
fi
if [ "$myvar" = "3" ]
then
echo "myvar ΡΠ°Π²Π½ΠΎ 3"
fi
Π ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, Π° Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊ.
Π’ΠΎΠ½ΠΊΠΎΡΡΠΈ ΠΏΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΡΡΡΠΎΠΊ
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° Π²Ρ Π½Π΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΠΎΡΠ΅ΠΌΡ? ΠΠ° ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΡΡΡΠΎΠΊΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠ΅ΡΠΈΡΡΡ ΠΏΡΠΎΠ±Π΅Π» ΠΈΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ bash Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊ:
if [ $myvar = "foo bar oni" ]
then
echo "yes"
fi
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«$myvarΒ» Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ Β«fooΒ», ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ ΠΈ Π½Π΅ ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ. ΠΠΎ Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«$myvarΒ» Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ Β«foo bar oniΒ», ΡΠΊΡΠΈΠΏΡ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ:
[: too many arguments
ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, bash ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ:
[ foo bar oni = "foo bar oni" ]
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ bash Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΠΏΡΠΎΠ±Π΅Π»Ρ, ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π° Π² Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ. ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π΄ΡΠΌΠ°Π΅Ρ, ΡΡΠΎ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠΎΡΠ»Π΅ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ, ΠΎΡΠΈΠ±ΠΊΠ° Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈ ΠΊΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ Π·Π°Π΄ΡΠΌΠ°Π»ΠΈ. ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, Π΅ΡΠ»ΠΈ Π²Ρ Π²ΠΎΠ·ΡΠΌΠ΅ΡΠ΅ Π² ΠΏΡΠΈΠ²ΡΡΠΊΡ Π·Π°ΠΊΠ»ΡΡΠ°ΡΡ Π² Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΡΠΎ ΠΈΠ·Π±Π΅ΠΆΠΈΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π²ΡΡΠ΅. ΠΠΎΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΊΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°:
if [ "$myvar" = "foo bar oni" ]
then
echo "yes"
fi
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΈ Π½Π΅ ΠΏΡΠ΅ΠΏΠΎΠ΄Π½Π΅ΡΠ΅Ρ Π½Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΡ ΡΡΡΠΏΡΠΈΠ·ΠΎΠ².
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»Π° ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π·Π°ΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ ΠΈΡ Π² Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ Π° Π½Π΅ Π² ΠΎΠ΄ΠΈΠ½Π°ΡΠ½ΡΠ΅. ΠΠ΄ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ ΠΎΡΠΊΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ² Β«forΒ»
Π₯ΠΎΡΠΎΡΠΎ, Ρ ΡΡΠ»ΠΎΠ²Π½ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°ΠΌΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ, ΠΏΠΎΡΠ° ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ. ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Β«forΒ«. ΠΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
#!/bin/bash
for x in one two three four
do
echo "number $x"
done
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
number one
number two
number three
number four
Π§ΡΠΎ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ? Π§Π°ΡΡΡ Β«for xΒ» ΡΠΈΠΊΠ»Π° Β«forΒ» ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ) Β«$xΒ», ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Β«oneΒ», Β«twoΒ», Β«threeΒ», ΠΈ Β«fourΒ» (ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π·Π° ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΊΡ ΡΠΈΠΊΠ»Π°). ΠΠΎΡΠ»Π΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«$xΒ», Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΎ ΡΠΈΠΊΠ»Π° (ΠΊΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ Β«doΒ» ΠΈ Β«doneΒ»). Π ΡΠ΅Π»Π΅ ΡΠΈΠΊΠ»Π° ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π½Π° ΠΏΠ΅ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«$xΒ». ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠ»ΠΎΠ²Π° Β«inΒ» Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Β«forΒ» Π²ΡΠ΅Π³Π΄Π° ΡΡΠΎΠΈΡ Π½Π΅ΠΊΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΊΠ°Π·Π°Π»ΠΈ ΡΠ΅ΡΡΡΠ΅ ΡΠ»ΠΎΠ²Π°, Π½ΠΎ ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ°Π±Π»ΠΎΠ½ (wildcard). Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠΈΠΊΠ»Π°:
#!/bin/bash
for myfile in /etc/r*
do
if [ -d "$myfile" ]
then
echo "$myfile (dir)"
else
echo "$myfile"
fi
done
ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
/etc/rc0.d (dir)
/etc/rc1.d (dir)
/etc/rc2.d (dir)
/etc/rc3.d (dir)
/etc/rc4.d (dir)
/etc/rc5.d (dir)
/etc/rc6.d (dir)
/etc/rc.local
/etc/rcS.d (dir)
/etc/rearj.cfg
/etc/reportbug.conf
/etc/resolvconf (dir)
/etc/resolv.conf
/etc/rmt
/etc/rpc
/etc/rsyslog.conf
/etc/rsyslog.d (dir)
ΠΠΎΠ΄ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈΠ· /etc/ ΠΈΠΌΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Β«rΒ». Π‘Π½Π°ΡΠ°Π»Π° bash Π½Π°ΠΉΠ΄Π΅Ρ Π²ΡΠ΅ ΡΠ°ΠΊΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ ΡΡΡΠΎΠΊΠΎΠΉ /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d β¦ /etc/rsyslog.d ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π°. Π ΡΠ΅Π»Π΅ ΡΠΈΠΊΠ»Π° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΡΠΎΡ ΡΠ°ΠΉΠ» Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠ΅ΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Β«-dΒ«. ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠ΅ΠΉ, ΡΡΠ΄ΠΎΠΌ Ρ Π΅Π³ΠΎ Π½Π°Π·ΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΡΡΡ Β«(dir)Β».
Π ΡΠΏΠΈΡΠΊΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ:
for x in /etc/r??? /var/lo* /home/drobbins/mystuff/* /tmp/${MYPATH}/*
do
cp $x /mnt/mydira
done
Bash Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΡΠ°ΡΠΊΡΡΠ²Π°Π΅Ρ ΡΠ°Π±Π»ΠΎΠ½Ρ. Π Π·Π°ΡΠ΅ΠΌ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² Π·Π°Π΄Π°Π½Π½ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ.
ΠΠΎ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π»ΠΈ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΡ ΠΏΡΡΡΡ , Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅:
for x in ../* mystuff/*
do
echo "$x is a silly file"
done
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ bash ΡΠ°ΡΠΊΡΡΠ²Π°Π΅Ρ ΡΠ°Π±Π»ΠΎΠ½ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ (Π½Π΅ ΡΠΎΠΉ Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΠΊΡΠΈΠΏΡ, Π° ΡΠΎΠΉ ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«pwdΒ»). ΠΠΎΠΈΠ³ΡΠ°ΠΉΡΠ΅ΡΡ Ρ ΡΡΠΈΠΌ ΡΠΊΡΠΈΠΏΡΠΎΠΌ, ΠΏΠΎΠ·Π°ΠΏΡΡΠΊΠ°ΠΉΡΠ΅ Π΅Π³ΠΎ ΠΈΠ· ΡΠ°Π·Π½ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΈΠΊΠ» ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ:
#!/bin/bash
for i in "$@"
do
echo "ΠΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ: ${i}."
done
ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
$ ./test.sh hello there you silly
ΠΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ: hello.
ΠΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ: there.
ΠΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ: you.
ΠΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ: silly.
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Β«$@Β» ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ Π²ΡΡΠ΅.
ΠΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ° Π² shell
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠ°Π·Π±ΠΎΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π° ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π½Π°ΡΡΠΈΠΌΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΏΡΠΎΡΡΡΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΡΠΎΡΡΠΎ Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Β«$((Β ))Β» ΠΈ bash ΠΏΠΎΡΡΠΈΡΠ°Π΅Ρ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
$ echo $(( 100 / 3 ))
33
$ myvar="56"
$ echo $(( $myvar + 12 ))
68
$ echo $(( $myvar - $myvar ))
0
$ myvar=$(( $myvar + 1 ))
$ echo $myvar
57
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ΠΌ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² shell, ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΡ Β«whileΒ» ΠΈ Β«untilΒ».
Π¦ΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Ρ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ (Β«whileΒ» ΠΈ Β«untilΒ»)
Β«whileΒ»βΡΠΈΠΊΠ» ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠΊΠ° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΠΈΡΡΠΈΠ½Π½ΠΎ. ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ:
while [ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ]
do
ΠΊΠΎΠ΄
done
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ΅Π»ΠΎ ΡΠΈΠΊΠ»Π° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΠ²Π½ΠΎ 10 ΡΠ°Π·:
myvar=0
while [ $myvar -ne 10 ]
do
echo "$myvar"
myvar=$(( $myvar + 1 ))
done
ΠΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΡΠ΅Π»Π° ΡΠΈΠΊΠ»Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Β«myvarΒ» ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° 1. ΠΠΎΠ³Π΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°Π²Π½ΡΠΌ 10, ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΈ ΡΠΈΠΊΠ» ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΡΡΡ.
Β«UntilΒ»βΡΠΈΠΊΠ» ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π° Β«whileΒ»βΡΠΈΠΊΠ»: ΠΎΠ½ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ ΠΏΠΎΠΊΠ° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ Π»ΠΎΠΆΠ½ΠΎ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Β«untilΒ»βΡΠΈΠΊΠ»Π° ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΠ³ΠΎ Β«whileΒ»βΡΠΈΠΊΠ»Ρ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
myvar=0
until [ $myvar -eq 10 ]
do
echo $myvar
myvar=$(( $myvar + 1 ))
done
ΠΠΊΡΡΡΠ΅Π½Π½ΡΠΉ Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΡΠΈΠΊΠ»Π°
ΠΠ»Ρ ΡΠΊΡΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· Β«forΒ», Β«whileΒ» ΠΈΠ»ΠΈ Β«untilΒ» ΡΠΈΠΊΠ»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° break. ΠΠ»Ρ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ² β break N, Π³Π΄Π΅ N β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ².
name=0
while :
do
wget http://example.com/gallery/${name}.png
[ $? -ne 0 ] && break
done
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅: Β«while :Β» β Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ». ΠΠ²ΠΎΠ΅ΡΠΎΡΠΈΠ΅ β ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° bash ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½ΠΎ Π²ΡΠ΅Π³Π΄Π° Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΡΡΠΏΠ΅Ρ ΠΎΠΌ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $? ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ°ΡΡΡ Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π·Π°Π²Π΅ΡΡΠΈΠ»Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΌΠΎΡΡΠΈ man bash). Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠ΄ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ 0 ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΡΠΎ ΠΏΡΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠΈ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΊ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΠΎΡΡΠ΅ΠΉ ΠΏΠΎΡΠ»Π΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈ (&&). Break ΠΏΡΠ΅ΡΡΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠΊΠ»Π°.
ΠΡΠ΅Π΄ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° Π·Π½Π°ΠΊΠΎΠΌΡΡ Π½Π°ΠΌ ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Β«ifΒ» (ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ Π² bash ΠΎΠ΄Π½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ):
[ $? -ne 0 ] && break
ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π½ΠΎ ΡΠ΅ΡΠ΅Π· ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ:
if [ $? -ne 0 ]
then
break
fi
ΠΠ»ΠΈ Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ
if [ $? -ne 0 ]; then break; fi
ΠΠ°, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ, ΡΠΎΠ»ΡΠΊΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΠΈΡ Π·Π½Π°ΠΊΠΎΠ² Β«ΡΠΎΡΠΊΠ° Ρ Π·Π°ΠΏΡΡΠΎΠΉΒ». ΠΠΎ Π½Π΅ ΡΡΠΎΠΈΡ ΠΏΡΠΈΠ²ΡΠΊΠ°ΡΡ ΠΊ ΡΠ°ΠΊΠΎΠΉ ΡΠΎΡΠΌΠ΅ Π·Π°ΠΏΠΈΡΠΈ β ΡΡΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π°.
ΠΠΎΠΌΠ°Π½Π΄Π°βΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ Β«caseΒ»
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° Β«caseΒ» ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
case "${x##*.}" in
gz) gzunpack ${SROOT}/${x} ;;
bz2) bz2unpack ${SROOT}/${x} ;;
*) echo "Π€ΠΎΡΠΌΠ°Ρ Π°ΡΡ
ΠΈΠ²Π° Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½."
exit
;;
esac
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΡΡΠΎΠΊΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«$xΒ» β Β«${x##*.}Β». ΠΠ°ΠΊ ΠΌΡ ΠΏΠΎΠΌΠ½ΠΈΠΌ ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΠ°ΡΡΠΈ, ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«$xΒ» ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°. ΠΠ°ΡΠ΅ΠΌ bash ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΡΡΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Ρ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌΠΈ ΡΡΠΎΡΡΠΈΠΌΠΈ ΡΠ»Π΅Π²Π° ΠΎΡ ΠΎΠ΄ΠΈΠ½Π°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ Β«)Β«. ΠΡΠ»ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΡΠ»ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΅Π³Π΄Π°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΡΡΠΎΠΊΠ΅ ΡΡΠΎΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ Β«*Β«, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΠΉ Ρ Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½
Π bash Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ²ΠΎΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ ΠΈ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (C, Pascalβ¦). ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π±ΠΎΡΡ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
tarview() {
echo -n "Displaying contents of $1 "
if [ ${1##*.} = tar ]
then
echo "(uncompressed tar)"
tar tvf $1
elif [ ${1##*.} = gz ]
then
echo "(gzip-compressed tar)"
tar tzvf $1
elif [ ${1##*.} = bz2 ]
then
echo "(bzip2-compressed tar)"
cat $1 | bzip2 -d | tar tvf -
fi
}
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Β«caseΒ«. Π‘ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΡΠΎΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ?
ΠΡΡΠ΅ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«tarviewΒ», ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ β ΠΈΠΌΡ ΡΠ°ΡΠ±ΠΎΠ»Π°. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π²ΠΈΠ΄ ΡΠ°ΡΠ±ΠΎΠ»Π° (Π±Π΅Π· ΡΠΆΠ°ΡΠΈΡ, ΡΠΆΠ°ΡΡΠΉ gzip-ΠΎΠΌ ΠΈΠ»ΠΈ bzip2) ΠΏΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΡΡΠΎΡ ΡΠΈΠΏ ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π°ΡΡ ΠΈΠ²Π°. ΠΡΠ»ΠΈ ΡΠΎΡΠΌΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ, Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ:
$ ./tarview.sh shorten.tar.gz
Displaying contents of shorten.tar.gz (gzip-compressed tar)
drwxr-xr-x ajr/abbot 0 1999-02-27 16:17 shorten-2.3a/
-rw-r--r-- ajr/abbot 1143 1997-09-04 04:06 shorten-2.3a/Makefile
-rw-r--r-- ajr/abbot 1199 1996-02-04 12:24 shorten-2.3a/INSTALL
-rw-r--r-- ajr/abbot 839 1996-05-29 00:19 shorten-2.3a/LICENSE
....
ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π°ΠΌ ΠΊΠ°ΠΊ ΠΈ ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π²Π½ΡΡΡΠΈ ΡΠΊΡΠΈΠΏΡΠ°. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Β«$#Β» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΡΠΎ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ β ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Β«$0Β«. ΠΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠ° ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· ΡΠΊΡΠΈΠΏΡΠ° ΠΈΠ»ΠΈ ΡΡΡΠΎΠΊΡ Β«bashΒ» ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
ΠΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΊΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠ°ΠΉΠ» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«/myfunc.txtΒ») Π° Π·Π°ΡΠ΅ΠΌ Π΄Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
$ . myfunc.txt
ΠΈΠ»ΠΈ ΡΡΠΎ ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅
$ source myfunc.txt
ΠΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΡΠΎΠΊΠ° Π·Π° ΡΡΡΠΎΠΊΠΎΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅. (ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΠΊΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠΎΠΊΠ° Π·Π° ΡΡΡΠΎΠΊΠΎΠΉ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, Π½ΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½Π΅Π΅). ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ·ΡΠ²Π°ΡΡ Π½Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΡΠΌΠΎ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ:
$ tarview shorten.tar.gz
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π»ΡΠ±Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½Π° Π² ΡΠ°ΠΉΠ» ~/.bashrc ΠΈΠ»ΠΈ ~/.bash_profile, ΡΠΎΠ³Π΄Π° Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ Π΅Π΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π»ΠΎΠ³ΠΈΠ½Π΅.
ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½
Π§Π°ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΡ ΡΠ·ΡΠΊΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π‘ΠΈ), ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ½Π° ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π°ΠΏΠΈΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Β«my functionΒ» Π½Π° C ΠΈ Π²Π½ΡΡΡΠΈ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Β«xΒ», ΡΠΎ ΠΎΠ½Π° Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«xΒ», ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Π²Π½Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Β«myfunctionΒ».
ΠΠΎ Π² bash Π²ΡΠ΅ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ. Π bash, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ½Π° ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² ΠΎΠ±ΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ ΡΠ²ΠΎΠ΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ:
#!/bin/bash
myvar="hello"
myfunc() {
myvar="one two three"
for x in $myvar
do
echo $x
done
}
myfunc
echo $myvar $x
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΡΡΡΠΎΠΊΠ° Β«ne two three threeΒ«, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠ°Ρ ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Β«myvarΒ», ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°Π»Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«myvarΒ» ΠΈ ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° Β«xΒ» ΡΠ°Π²Π½ΠΎΠ΅ Β«threeΒ» ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»ΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π ΡΡΠΎΠΌ ΠΏΡΠΎΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΡ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΠΈ ΡΡΡΡΠ°Π½ΠΈΡΡ, ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎ Π΅ΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ: ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΡΠΎ ΠΎΠ½Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Β«localΒ«. Π‘ΠΎΠ·Π΄Π°Π½Π½Π°Ρ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ½Π΅ΡΠ΅Π½Π° ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Ρ ΠΈΠΌΠ΅Π½ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ:
#!/bin/bash
myvar="hello"
myfunc() {
local x
local myvar="one two three"
for x in $myvar
do
echo $x
done
}
myfunc
echo $myvar $x
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΡΡΡΠΎΠΊΠ° Β«helloΒ» β Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«myvarΒ» (Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΠ»Π° Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Β«myvarΒ», ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ), Π° Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Β«xΒ» ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ β Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
ΠΠΎΠ΄Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΡΠΎΠ³ΠΎΠ²
ΠΠΎΡ ΠΈ Π²ΡΠ΅. Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΈΠΌΠ΅Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π² bash ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΊΡΠΈΠΏΡΡ. ΠΠ° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ ΠΊ ΡΠΏΡΠ°Π²ΠΊΠ΅ man bash ΠΈΠ»ΠΈ ΠΊ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Ρ Advanced Bash-Scripting Guide
Π‘ΠΌΠΎΡΡΠΈ ΡΠ°ΠΊΠΆΠ΅
ΠΡΠΈΠ³ΠΈΠ½Π°Π» ΡΡΠ°ΡΡΠΈβ Bash by example, Part 2 (eng)
ΠΡΠ½ΠΎΠ²Ρ BASH. Π§Π°ΡΡΡ 2 [Π‘ΠΏΡΠ°Π²ΠΎΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° PuppyRus Linux]
ο»Ώ
ΠΡΠ° ΡΠ°ΡΡΡ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° ΡΠΈΠΊΠ»Π°ΠΌ, ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ for-in ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΏΠΎΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠΌ Π² ΡΠΏΠΈΡΠΊΠ΅. ΠΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
for ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ in ΡΠΏΠΈΡΠΎΠΊ_Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ do ΠΊΠΎΠΌΠ°Π½Π΄Ρ done
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
#!/bin/bash for i in 0 1 2 3 4 #ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $i Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡ 0 Π΄ΠΎ 4 Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ do echo "Console number is $i" >> /dev/pts/$i #ΠΠΈΡΠ΅ΠΌ Π² ΡΠ°ΠΉΠ» /dev/pts/$i(ΡΠ°ΠΉΠ» Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°) ΡΡΡΠΎΠΊΡ "Console number is $i" done #ΡΠΈΠΊΠ» ΠΎΠΊΠΎΠ½ΡΠ΅Π½ exit 0
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π² ΠΏΠ΅ΡΠ²ΡΡ 5 Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΡ (ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°Ρ ) ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΡΡΠΎΠΊΠ° Ρ Π΅Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ. Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ $i ΠΏΠΎΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΈ Π² ΡΠΈΠΊΠ»Π΅ ΠΈΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ° ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
Π¦ΠΈΠΊΠ» while ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΡΠΈΠΊΠ»Π° for-in ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΏΠΎΠΊΠ° ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΡΠΈΠ½Π½ΠΎ( ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° = 0). Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
while Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ°Ρ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° do ΠΊΠΎΠΌΠ°Π½Π΄Ρ done
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΈΠΊΠ»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
#!/bin/bash again=yes #ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ "yes" ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ again while [ "$again" = "yes" ] #ΠΡΠ΄Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΈΠΊΠ», ΠΏΠΎΠΊΠ° $again Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ "yes" do echo "Please enter a name:" read name echo "The name you entered is $name" Β echo "Do you wish to continue?" read again done echo "Bye-Bye"
Π ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΊΡΠΈΠΏΡΠ°:
ite@ite-desktop:~$ ./bash3_primer1.sh Please enter a name: ite The name you entered is ite Do you wish to continue? yes Please enter a name: mihail The name you entered is mihail Do you wish to continue? no Bye-Bye
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΠΌ ΡΠΈΠΊΠ» Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΌΡ Π½Π΅ Π²Π²Π΅Π΄Π΅ΠΌ ΡΡΠΎ-ΡΠΎ ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ΅ ΠΎΡ Β«yesΒ». ΠΠ΅ΠΆΠ΄Ρ do ΠΈ done ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ Ρ.ΠΏ., Π²ΡΠ΅ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡ Π² ΡΠΈΠΊΠ»Π΅.ΠΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π±ΡΡΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΡΠΌ Ρ ΡΡΠΈΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² Π½ΡΠΌ ΠΊΠ°ΠΊΡΡ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΠ°ΡΡΡ Π² Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ».
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ± ΡΡΠ»ΠΎΠ²ΠΈΠΈ ΠΈΡΡΠΈΠ½Π½ΠΎΡΡΠΈ. ΠΠΎΡΠ»Π΅ while, ΠΊΠ°ΠΊ ΠΈ Π² ΡΡΠ»ΠΎΠ²Π½ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ if-then-else ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠ°Π²Π»ΡΡΡ Π»ΡΠ±ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°, ΠΈ ΡΠΈΠΊΠ» Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° = 0! ΠΠΏΠ΅ΡΠ°ΡΠΎΡ Β»[Β» Π°Π½Π°Π»ΠΎΠ³ ΠΊΠΎΠΌΠ°Π½Π΄Ρ test, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΈΡΡΠΈΠ½Π½ΠΎΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π²Π·ΡΠ» Π΅Π³ΠΎ ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ Advanced Bash scripting. Π£ΠΆ ΠΎΡΠ΅Π½Ρ ΠΎΠ½ ΠΌΠ½Π΅ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΡΡ Π£Π»ΡΠ±ΠΊΠ°, Π½ΠΎ Ρ Π΅Π³ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠΎΡΡΠΈΠ». Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ Ρ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΡΠΈΠΏΠΎΠΌ ΡΠΈΠΊΠ»ΠΎΠ² UNTIL-DO. ΠΡΠ° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»Π½ΡΠΉ Π°Π½Π°Π»ΠΎΠ³ ΡΠΈΠΊΠ»Π° WHILE-DO, ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠΊΠ° ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΎΠΆΠ½ΠΎ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
#!/bin/bash echo "ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠΈΡΠ»ΠΈΡΠ΅Π»Ρ: " read dividend echo "ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π·Π½Π°ΠΌΠ΅Π½Π°ΡΠ΅Π»Ρ: " read divisor Β dnd=$dividend #ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ dividend ΠΈ divisor, #ΡΠΎΡ ΡΠ°Π½ΠΈΠΌ ΠΈΡ Π·Π½Π°Π½ΠΈΡ Π² Π΄ΡΡΠ³ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Ρ.ΠΊ. ΠΎΠ½ΠΈ Π½Π°ΠΌ #ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ dvs=$divisor remainder=1 Β until [ "$remainder" -eq 0 ] do let "remainder = dividend % divisor" dividend=$divisor divisor=$remainder done Β echo "ΠΠΠ ΡΠΈΡΠ΅Π» $dnd ΠΈ $dvs = $dividend"
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ°:
ite@ite-desktop:~$ ./bash3_primer3.sh ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠΈΡΠ»ΠΈΡΠ΅Π»Ρ: 100 ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π·Π½Π°ΠΌΠ΅Π½Π°ΡΠ΅Π»Ρ: 90 ΠΠΠ ΡΠΈΡΠ΅Π» 100 ΠΈ 90 = 10
ΠΠΎΠΌΠ°Π½Π΄Π° let.
ΠΠΎΠΌΠ°Π½Π΄Π° let ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π½Π°Π΄ Π²Π²Π΅Π΄Π΅Π½Π½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ:
#!/bin/bash echo "ΠΠ²Π΅Π΄ΠΈΡΠ΅ a: " read a echo "ΠΠ²Π΅Π΄ΠΈΡΠ΅ b: " read b Β let "c = a + b" #ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ echo "a+b= $c" let "c = a / b" #Π΄Π΅Π»Π΅Π½ΠΈΠ΅ echo "a/b= $c" let "c <<= 2" #ΡΠ΄Π²ΠΈΠ³Π°Π΅Ρ c Π½Π° 2 ΡΠ°Π·ΡΡΠ΄Π° Π²Π»Π΅Π²ΠΎ echo "c ΠΏΠΎΡΠ»Π΅ ΡΠ΄Π²ΠΈΠ³Π° Π½Π° 2 ΡΠ°Π·ΡΡΠ΄Π°: $c" let "c = a % b" # Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ a Π½Π° b echo "$a / $b. ΠΎΡΡΠ°ΡΠΎΠΊ: $c "
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ:
ite@ite-desktop:~$ ./bash3_primer2.sh ΠΠ²Π΅Π΄ΠΈΡΠ΅ a: 123 ΠΠ²Π΅Π΄ΠΈΡΠ΅ b: 12 a+b= 135 a/b= 10 c ΠΏΠΎΡΠ»Π΅ ΡΠ΄Π²ΠΈΠ³Π° Π½Π° 2 ΡΠ°Π·ΡΡΠ΄Π°: 40 123 / 12. ΠΎΡΡΠ°ΡΠΎΠΊ: 3
ΠΡ Π²ΠΎΡ, ΠΊΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ, ΡΠΏΠΈΡΠΎΠΊ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ:
+ β ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
β β Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅
* β ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅
/ β Π΄Π΅Π»Π΅Π½ΠΈΠ΅
** β Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ
% β ΠΌΠΎΠ΄ΡΠ»Ρ(Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ), ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ
let ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠΎΠΊΡΠ°ΡΠ°Ρ ΠΊΠΎΠ»-Π²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: a = a+b ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ a +=b ΠΈ Ρ.Π΄.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΡΠ΅ΠΎΡΠΈΠΈ.
ΠΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ²
Π bash (ΠΊΠ°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ°Ρ ) Π΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ: 0 (stdin), 1 (stdout), 2 (stderr).
stdout β Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄. Π‘ΡΠ΄Π° ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π²ΡΠ΅ ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
stdin β Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄. ΠΡΠΎ Π²ΡΠ΅ ΡΡΠΎ Π½Π°Π±ΠΈΡΠ°Π΅Ρ ΡΠ·Π΅Ρ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ
stderr β Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΠ»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΡΡΠΈΠΌΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ°ΠΌΠΈ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ: > (ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Π°), < (ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°). ΠΠΏΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠΌΠΈ Π½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
cat /dev/random > /dev/null
ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ cat /dev/random
Π² /dev/null
(Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ) ΠΈΠ»ΠΈ
ls -la > listing
Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΡΠ°ΠΉΠ» listing ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° (ΡΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Π΅ΠΉ)
ΠΡΠ»ΠΈ Π΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π΄ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π² ΡΠ°ΠΉΠ» (ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Β»>Β» ΠΎΠ½ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ), Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΌΠ΅ΡΡΠΎ Β»>Β» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Β»>>Β»
sudo < my_password
ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΡΡΠ±Ρ sudo Π²Π²Π΅ΡΡΠΈ ΠΏΠ°ΡΠΎΠ»Ρ, ΠΎΠ½ Π²ΠΎΠ·ΡΠΌΠ΅ΡΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π° my_password, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ Π²Ρ Π΅Π³ΠΎ Π²Π²Π΅Π»ΠΈ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ.
ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΡΠ°ΠΉΠ» ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
./program_with_error 2> error_file
ΡΠΈΡΡΠ° 2 ΠΏΠ΅ΡΠ΅Π΄ Β»>Β» ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ Π²ΡΠ΅ ΡΡΠΎ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ Π² Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ 2(stderr).
ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΡΡΠ°Π²ΠΈΡΡ stderr ΠΏΠΈΡΠ°ΡΡ Π² stdout, ΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄. ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
./program_with_error 2>&1
ΡΠΈΠΌΠ²ΠΎΠ» Β»&Β» ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ 1(stdout)
(ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ stderr ΠΏΠΈΡΠ΅Ρ Π½Π° ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Π²Π΅ΡΠ½Π΅Π΅ ΠΏΠΈΡΠ΅Ρ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅ΠΉ)).
ΠΠΎΠ½Π²Π΅ΠΉΠ΅Ρ β ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΡΡ Bash. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΏΡΠΎΡΡΠΎΠΉ:
ΠΊΠΎΠΌΠ°Π½Π΄Π°1 | ΠΊΠΎΠΌΠ°Π½Π΄Π° 2 β ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ 1 ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π½Π° Π²Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ 2
ΠΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
ls -la | grep "hash" |sort > sortilg_list
Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ls -la
ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ grep, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ±ΠΈΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ
Π²ΡΡΡΠ΅ΡΠΈΡΡΡ ΡΠ»ΠΎΠ²ΠΎ hash, ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ sort, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΈΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΡΠ°ΠΉΠ» sorting_list. ΠΡΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ.
Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠΊΡΠΈΠΏΡΡ Π½Π° Bash ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ ΡΡΡΠΈΠ½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ, ΠΎΡΡΡΠ΄Π° ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ stdout ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π½Π° stdin Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π΅ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½. Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Ρ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Π²Π½ΡΡΡΠΈ ΡΠΊΡΠΈΠΏΡΠ°. ΠΡΠΌΠ°Ρ ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Ρ ΠΏΡΠΈΠ²Π΅Π» Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π°ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² « ΠΊΠ°Π²ΡΡΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
a = `echo "qwerty"` echo $a
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ: qwerty
ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ, ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄Π»Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ, ΠΏΡΠΈΠΌΠ΅Ρ:
LIST=`find /svn/ -type d 2>/dev/null| awk '{FS="/"} {print $4}'| sort|uniq | tr '\n' ' '` for ONE_OF_LIST in $LIST do svnadmin hotcopy /svn/$ONE_OF_LIST /svn/temp4backup/$ONE_OF_LIST done
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΠΊΠ» for-do-done Π΄Π»Ρ Π°ΡΡ ΠΈΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ Π² ΠΏΠ°ΠΏΠΊΠ΅ /svn/ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ svnadmin hotcopy(ΡΡΠΎ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Ρ). ΠΠ°ΠΈΠ±ΠΎΠ»ΡΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΡΠΎΠΊΠ°: LIST=`find /svn/ -type d 2>/dev/null| awk ‘{FS=Β»/Β»} {print $4}’| sort|uniq | tr ‘\n’ ‘ ‘` Π Π½Π΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ LIST ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ find, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ awk, sort, uniq,tr(Π²ΡΠ΅ ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ, ΠΈΠ±ΠΎ ΡΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΡΠ°ΡΡΡ). Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ LIST Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅Π½Π° Π²ΡΠ΅Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΠ΅ /svn/ ΠΏΠ³ΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΡ Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ(Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π΅Ρ ΡΡΡΠ°Π²ΠΈΡΡ ΡΠΈΠΊΠ»Ρ.
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, Π²ΡΠ΅ Π½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΠ°ΡΡ ΡΠ²ΠΎΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ². Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΡΠ°ΡΡΠΈ Ρ ΠΎΡΡ ΠΏΠΎΠΆΠ΅Π»Π°ΡΡ ΡΠ΄Π°ΡΠΈ Π² ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ BASH ΠΈ Linux Π² ΡΠ΅Π»ΠΎΠΌ. ΠΡΠΈΡΠΈΠΊΠ°, ΠΊΠ°ΠΊ Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΠ΅ΡΡΡ. Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΠ°ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΊΠ°ΠΊ sed, awk.
ΠΠ²ΡΠΎΡ: Zloy_T
ΠΠΎ ΠΌΠΎΡΠΈΠ²Π°ΠΌ ΡΠΎΡΡΠΌΠ°.
ΠΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Bash — Linux ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² bash Π½Π΅ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ bash ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΈΡΠ»Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΡΠΈΡΠ»Π°, ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π². ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² bash ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
ΠΡΠΈΠΌΠ΅Ρ — 1: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«exprΒ»
Π‘Π°ΠΌΠ°Ρ ΡΡΠ°ΡΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² bash — Β« expr Β».ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΡΠΌΠΎ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π». ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π΅Π» Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠΌ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β« exprΒ» Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» bash ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ βexprβ , ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° βexprβ .
#! / Bin / bash
# Π Π°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠ°
expr ’10 + 30 ‘
# Π Π°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠ°
expr 10 + 30
# ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
expr 10 + 30
# ΠΠ°ΠΉΡΠΈ ΠΎΡΡΠ°ΡΠΎΠΊ
expr 30% 9
# ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ expr Ρ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌ Π°ΠΏΠΎΡΡΡΠΎΡΠΎΠΌ
myVal1 = `expr 30/10`
echo $ myVal1
# ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ expr Π²Π½ΡΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ replace
myVal2 = $ (expr 30-10)
echo $ myVal2
ΠΠ°ΠΏΡΡΡΠΈΡΡ ΡΠ°ΠΉΠ» arith2.Ρ.
ΠΡΡ ΠΎΠ΄:
ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ±Π΅Π», Π° Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ expr Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π·Π½Π°ΡΠΈΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ expr ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎΠ·ΠΆΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΠΊΠ°Π²ΡΡΠΊΡ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ . 30/10 Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π°ΠΏΠΎΡΡΡΠΎΡΠ° , Π° 30-10 Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π·Π°ΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ .
ΠΡΠΈΠΌΠ΅Ρ — 2: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«letΒ»
Β«letΒ» — Π΅ΡΠ΅ ΠΎΠ΄Π½Π° Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² bash. Β«letΒ» ΠΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π²ΡΠ²ΠΎΠ΄ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π±Π΅Π· ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«letΒ» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ½ΡΡΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«exprΒ» . Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» bash ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° βletβ .
#! / Bin / bash
# Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ 9 Π½Π° 8
let val1 = 9 * 3
echo $ val1
# ΠΠ΅Π»Π΅Π½ΠΈΠ΅ 8 Π½Π° 3
let «val2 = 8/3»
echo $ val2
# ΠΡΡΠΈΡΠ°Π½ΠΈΠ΅ 3 from 9
let val3 = 9-3
echo $ val3
# ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΡ
let val4 = 7
let val4 ++
echo $ val4
# ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π² Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
let «val5 = 50 + $ 1»
echo $ val5
ΠΠ°ΠΏΡΡΡΠΈΡΡ ΡΠ°ΠΉΠ» arith3.Ρ.
ΠΡΡ ΠΎΠ΄:
ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«letΒ» Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠ°Ρ, ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π° Β« expr Β». ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠ΅Π½ΠΈΡΡ Π»ΡΠ±ΠΎΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΊΠ°Π²ΡΡΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π±Π΅Π· Π½ΠΈΡ . ΠΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π΅Π» Π² ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ . ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Β«letΒ» . ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«letΒ» , ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ — 3: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π²ΠΎΠΉΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π»ΡΠ±ΡΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² bash Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄. ΠΠ΄Π΅ΡΡ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°Ρ, Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π²ΠΎΠΉΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠ΅, ΡΠ΅ΠΌ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠ°ΠΊ βexprβ ΠΈΠ»ΠΈ βletβ . Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» bash ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π²ΠΎΠΉΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ.
#! / Bin / bash
# ΠΡΡΠΈΡΠ»ΠΈΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
val1 = $ ((10 * 5 + 15))
echo $ val1
# ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΠΎΡΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ / ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ
((val1 ++))
echo $ val1
val2 = 41
((—val2))
echo $ val2
# ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°
((val2 + = 60))
echo $ val2
# ΠΠ΅Π»Π΅Π½ΠΈΠ΅ 40 Π½Π° 6
((val3 = 40 / 6))
echo $ val3
ΠΠ°ΠΏΡΡΡΠΈΡΡ ΡΠ°ΠΉΠ» arith4.Ρ.
ΠΡΡ ΠΎΠ΄:
ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠΌ ΠΈΠ»ΠΈ Π±Π΅Π· ΠΏΡΠΎΠ±Π΅Π»Π°, Π° ΡΠ°ΠΊΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ / ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ Ρ Π΄Π²ΠΎΠΉΠ½ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ.
ΠΡΠΈΠΌΠ΅Ρ — 4: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«bcΒ» Π΄Π»Ρ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π»
ΠΠ΄Π½ΠΎ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² bash Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Β« expr Β» ΠΈΠ»ΠΈ Β«letΒ» ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΈΡΠ»Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΡΠΈΡΠ»Π°.Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π΄Π΅Π»Π΅Π½ΠΈΡ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π°. βbcβ ΠΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΈ ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Linux. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» bash ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ βbcβ Π² Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ .
#! / Bin / bash
# ΠΠ΅Π»Π΅Π½ΠΈΠ΅ 55 Π½Π° 3 Ρ ΡΠΎΠ»ΡΠΊΠΎ bc
echo «55/3» | bc
# ΠΠ΅Π»Π΅Π½ΠΈΠ΅ 55 Π½Π° 3 Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΡΠΈΠΈ bc ΠΈ -l
echo «55/3» | bc -l
# ΠΠ΅Π»Π΅Π½ΠΈΠ΅ 55 Π½Π° 3 Ρ ΠΏΠΎΠΌΠΎΡΡΡ bc ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π»Ρ
echo «scale = 2; 55/3» | Π΄ΠΎ Π½.Ρ.
ΠΠ°ΠΏΡΡΡΠΈΡΡ ΡΠ°ΠΉΠ» arith4.Ρ.
ΠΡΡ ΠΎΠ΄:
ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Β« bc Β» Π²ΡΠ΄Π°Π΅Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π΅Π»Π΅Π½ΠΈΡ. β bc -lβ ΠΠΎΠΌΠ°Π½Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΎΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄Π΅Π»Π΅Π½ΠΈΡ, ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ Π΄ΡΠΎΠ±Π½ΡΡ ΡΠ°ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ°ΡΡΡΠ°Π± Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ΄Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΡΠ°Π± = 2 . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ²ΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ 2 ΡΠΈΡΡΡ ΠΏΠΎΡΠ»Π΅ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² bash Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π°ΡΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠΌΠΎΡΡΠΈΡΠ΅ Π²ΠΈΠ΄Π΅ΠΎ!
.
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ — Π£ΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Linux
β ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ β’ Home β’ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ β
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Bash. ΠΠ±ΠΎΠ»ΠΎΡΠΊΠ° bash ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΎΠΏΡΠΈΡ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ expr ΠΈ bc Calculator.
ΠΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π² Bash Shell
ΠΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅:
$ ((Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅)) $ ((n1 + n2)) $ ((n1 / n2)) $ ((n1-n2))
ΠΡΠΈΠΌΠ΅ΡΡ
Π‘Π»ΠΎΠΆΠΈΡΠ΅ Π΄Π²Π° ΡΠΈΡΠ»Π° Π½Π° Π»Π΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ echo:
Π‘Π»ΠΎΠΆΠΈΡΠ΅ Π΄Π²Π° ΡΠΈΡΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ x ΠΈ y.Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ add.sh Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°:
#! / Bin / bash Ρ = 5 Ρ = 10 ans = $ ((Ρ + Ρ)) echo "$ x + $ y = $ ans"
Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ ΡΠ°ΠΉΠ». ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠΈΠΌΠ΅ΡΡ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ :
5 + 10 = 15
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΠ΅Π½ΠΈΡ add1.sh Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅:
#! / Bin / bash read -p "ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π΄Π²Π° ΡΠΈΡΠ»Π°:" x y ans = $ ((Ρ + Ρ)) echo "$ x + $ y = $ ans"
Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ ΡΠ°ΠΉΠ». ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
chmod + x add1.Ρ ./add1.sh
ΠΡΠΈΠΌΠ΅ΡΡ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ :
ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π΄Π²Π° ΡΠΈΡΠ»Π°: 20 30 20 + 30 = 50
ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Ρ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΡΠΈΠΌΠ΅Ρ | ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅Ρ Π΄ΠΎ |
---|---|---|---|
+ | ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ | ΡΡ ΠΎ $ ((20 + 5)) | 25 |
— | ΠΡΡΠΈΡΠ°Π½ΠΈΠ΅ | ΡΡ ΠΎ $ ((20-5)) | 15 |
/ | ΠΠΈΠ²ΠΈΠ·ΠΈΡ | ΡΡ ΠΎ $ ((20/5)) | 4 |
* | Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ | ΡΡ ΠΎ $ ((20 * 5)) | 100 |
% | ΠΠΎΠ΄ΡΠ»Ρ | ΡΡ ΠΎ $ ((20% 3)) | 2 |
++ | ΠΏΠΎΡΡΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ (Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° 1) | x = 5 ΡΡ ΠΎ $ ((x ++)) ΡΡ ΠΎ $ ((x ++)) | 5 6 |
— | ΠΏΠΎΡΡΠ΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ (Π²ΡΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° 1) | x = 5 ΡΡ ΠΎ $ ((x—)) | 4 |
** | ΠΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ | x = 2 y = 3 echo $ ((x ** y)) | 8 |
ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ°
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ°.Π£ΡΠΎΠ²Π½ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ±ΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° (ΡΠΈΡΠ°ΡΠ° ΠΈΠ· ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ bash).
id ++ id-- ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΏΠΎΡΡ-ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΠΈ ΠΏΠΎΡΡ-Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ++ id --id ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΏΡΠ΅-ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΠΈ ΠΏΡΠ΅-Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ - + ΡΠ½Π°ΡΠ½ΡΠΉ ΠΌΠΈΠ½ΡΡ ΠΈ ΠΏΠ»ΡΡ ! ~ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΎΡΡΠΈΡΠ°Π½ΠΈΠ΅ ** Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ * /% Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ, Π΄Π΅Π»Π΅Π½ΠΈΡ, ΠΎΡΡΠ°ΡΠΊΠ° + - ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ << >> ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΡΠ΄Π²ΠΈΠ³ΠΈ Π²Π»Π΅Π²ΠΎ ΠΈ Π²ΠΏΡΠ°Π²ΠΎ <=> = <> ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ==! = Π Π°Π²Π΅Π½ΡΡΠ²ΠΎ ΠΈ Π½Π΅ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ & ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ Π ^ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΠΠΠ | ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΠΠ && Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π || Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΠΠ expr? expr: expr ΡΡΠ»ΠΎΠ²Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ = * = / =% = + = - = << = >> = & = ^ = | = Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ expr1, expr2 Π·Π°ΠΏΡΡΠ°Ρ
β ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ β’ Home β’ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ β
.
ΠΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ° — Π£ΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Bash
ΠΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ°!
ΠΡΠ΅ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ.
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π²Π°ΡΠΈ ΡΠΊΡΠΈΠΏΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ ΡΠ°Π·ΡΠΌΠ½Π°Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡ, ΡΡΠΎ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΡ. ΠΠ°ΠΊ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΈΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ, ΠΈ Π·Π½Π°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΡΠΌ Π½Π°Π²ΡΠΊΠΎΠΌ Π² ΠΌΠ°ΡΡΠ΅ΡΡΡΠ²Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Bash.
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΡ Π² ΡΡΠ΅Π½Π°ΡΠΈΡΡ Bash. ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΡΡ, Π½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ — Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ (ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ).
ΠΡΡΡΡ
let — ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Bash, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠΎΡΡΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΡ. ΠΠ½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌΡ ΡΠΎΡΠΌΠ°ΡΡ:
let <Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅>
ΠΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΎΠΏΠΈΡΠ΅ΠΌ Π½ΠΈΠΆΠ΅.ΠΠ΅ΡΠ²Π°Ρ ΡΠ°ΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
let_example.sh
- #! / Bin / bash
- ΠΏΡΡΡΡ a = 5 + 4
- ΡΡ ΠΎ
- ΠΏΡΡΡΡ «a = 5 + 4»
- ΡΡ ΠΎ
- Π»Π΅Ρ a ++
- ΡΡ ΠΎ
- let «a = 4 * 5»
- ΡΡ ΠΎ
- let «a = 1 $ + 30»
- ΡΡ ΠΎ
Π΄ΠΎΠ»Π». Π‘Π¨Π
Π΄ΠΎΠ»Π». Π‘Π¨Π
Π΄ΠΎΠ»Π». Π‘Π¨Π
Π΄ΠΎΠ»Π». Π‘Π¨Π
Π΄ΠΎΠ»Π». Π‘Π¨Π
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ:
- Π‘ΡΡΠΎΠΊΠ° 4 — ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ.ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ, ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π±Π΅Π· ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ².
- Π‘ΡΡΠΎΠΊΠ° 7 — ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠ°Π²ΡΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΠΌ ΡΠ°ΡΡΡΠ°Π²Π»ΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ.
- Π‘ΡΡΠΎΠΊΠ° 10 — ΠΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ a Π½Π° 1. ΠΡΠΎ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ Π·Π°ΠΏΠΈΡΡ Β«a = a + 1Β».
- Π‘ΡΡΠΎΠΊΠ° 16 — ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
- ./let_example.sh 15
- 9
- 9
- 10
- 20
- 45
ΠΠΎΡ ΡΠ°Π±Π»ΠΈΡΠ° Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅, Π½ΠΎ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ.
+, -, \ *, / | ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅, ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΄Π΅Π»Π΅Π½ΠΈΠ΅ |
var ++ | Π£Π²Π΅Π»ΠΈΡΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ var Π½Π° 1 |
var — | Π£ΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ var Π½Π° 1 |
% | ΠΠΎΠ΄ΡΠ»Ρ (Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΡΠ°ΡΠΎΠΊ ΠΏΠΎΡΠ»Π΅ Π΄Π΅Π»Π΅Π½ΠΈΡ) |
ΠΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π΄ΡΡΠ³ΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°Ρ , ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π½ΠΈΠΆΠ΅.
Expr
expr ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° let, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠ½ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠ²Π΅Ρ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ let Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡΡΠ°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ. Π£ Π²Π°Ρ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ expr ΠΏΡΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
expr item1 ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ item2
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
expr_example.Ρ
- #! / Bin / bash
- expr 5 + 4
- expr «5 + 4»
- expr 5 + 4
- expr 5 \ * 1
- ΡΠΊΡΠΏΡ 11% 2
- a = $ (Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ 10β3)
- ΡΡ ΠΎ
$
Π΄ΠΎΠ»Π». Π‘Π¨Π
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ:
- Π‘ΡΡΠΎΠΊΠ° 4 — ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ.ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΊΠ°Π²ΡΡΠ΅ΠΊ.
- Π‘ΡΡΠΎΠΊΠ° 6 — ΠΡΠ»ΠΈ ΠΌΡ Π·Π°ΠΊΠ»ΡΡΠΈΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ, Π° Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ΠΎ.
- Π‘ΡΡΠΎΠΊΠ° 8 — ΠΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΡΡΠ°Π²ΠΈΠΌ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠ³Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ, Π° Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ΠΎ.
- Π‘ΡΡΠΎΠΊΠ° 10 — ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΡΠΎΠ±ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Bash, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ (ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΠΊΠΎΡΡΡ ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄), ΡΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΡ ΠΎΡΠΎΠ±ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
- Π‘ΡΡΠΎΠΊΠ° 12 — ΠΠ΄Π΅ΡΡ ΠΌΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ . ΠΠΎΠ΄ΡΠ»Ρ — ΡΡΠΎ ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π½Π° Π²ΡΠΎΡΠΎΠΉ.
- Π‘ΡΡΠΎΠΊΠ° 14 — ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ a .
- ./expr_example.sh 12
- 9
- 5 + 4
- 5 + 4
- 60
- 1
- 7
ΠΠ²ΠΎΠΉΠ½ΡΠ΅ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ
Π ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅Β» ΠΌΡ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π·Π° Π½Π°Ρ Π±Π°Π·ΠΎΠ²ΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΏΡΠ°Π²ΠΈΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. ΠΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π²ΠΎΠΉΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
$ ((Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅))
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ:
extension_example.sh
- #! / Bin / bash
- Π° = ((4 + 5))
- ΡΡ ΠΎ
- Π° = ((3 + 5))
- ΡΡ ΠΎ
- Π± = $ ((Π° + 3))
- ΡΡ ΠΎ
- Π± = (($ Π° + 4))
- ΡΡ ΠΎ
- ((b ++))
- ΡΡ ΠΎ $ Π±
- ((b + = 3))
- ΡΡ ΠΎ $ Π±
- Π° = ((4 * 5))
- ΡΡ ΠΎ
ΡΡΠ±.
Π΄ΠΎΠ»Π». Π‘Π¨Π
ΡΡΠ±.
Π΄ΠΎΠ»Π». Π‘Π¨Π
$
$
Π΄ΠΎΠ»Π». Π‘Π¨Π
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ:
- Π‘ΡΡΠΎΠΊΠ° 4 — ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ.ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΡΠ΅Π½ΠΈΡ Π±Π΅Π· ΠΊΠ°Π²ΡΡΠ΅ΠΊ.
- Π‘ΡΡΠΎΠΊΠ° 7 — ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, Π΅ΡΠ»ΠΈ ΡΠ±ΡΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π».
- Π‘ΡΡΠΎΠΊΠ° 10 — ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±Π΅Π· ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π·Π½Π°ΠΊΠ° $.
- Π‘ΡΡΠΎΠΊΠ° 13 — ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ $.
- Π‘ΡΡΠΎΠΊΠ° 16 — ΡΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³Π°Ρ ΡΠΎΡΠΌΠ°. ΠΠ΄Π΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ b ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° 1 (Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°, ΡΡΠΎ ΠΈ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΠ΄ let ).ΠΠΎΠ³Π΄Π° ΠΌΡ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΠΌ, Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ΅Π½ Π·Π½Π°ΠΊ $ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ.
- Π‘ΡΡΠΎΠΊΠ° 19 — ΡΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³Π°Ρ ΡΠΎΡΠΌΠ° ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°. ΠΠ΄Π΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ b ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° 3. ΠΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ b = b + 3 .
- Π‘ΡΡΠΎΠΊΠ° 19 — Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΠΊ * .
- ./expansion_example.sh
- 9
- 8
- 11
- 12
- 13
- 16
- 20
ΠΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ, Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΈ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.ΠΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΡΠΈΡΠΈΠ½, ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΠΌ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π²ΡΡΡΠΎΠ΅Π½Ρ Π² Bash, ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ (Ρ ΠΎΡΡ, ΡΠ΅ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠΉ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΌΠΎΡΠ½ΠΎΡΡΡΡ ΠΌΠ°ΡΠΈΠ½ Π² Π½Π°ΡΠΈ Π΄Π½ΠΈ ΡΠ°Π·Π½ΠΈΡΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°).
ΠΠ»ΠΈΠ½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ Π½Π΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ°, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ Π΄Π»ΠΈΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²), Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
$ {# ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ}
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
length_example.Ρ
- #! / Bin / bash
- a = «ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ»
- ΡΡ ΠΎ $ {# a}
- b = 4953
- ΡΡ ΠΎ $ {# b}
Π‘Π²ΠΎΠ΄ΠΊΠ°
- let Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
- Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°Π²Π½ΠΎΠΉ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
- Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ expr
- ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
- $ ((Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅))
- ΠΠ΅ΡΠ½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
- $ {# var}
- ΠΠ΅ΡΠ½ΡΡΡ Π΄Π»ΠΈΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ var.
- ΠΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ°
- Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² ΡΡΠ΅Π½Π°ΡΠΈΡΡ Bash. ΠΠ²ΠΎΠΉΠ½ΡΠ΅ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ — ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄.
- Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
- ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠ°ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² (ΠΈ ΠΊΠ°Π²ΡΡΠ΅ΠΊ).
ΠΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΡ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ³ΡΡΠ·ΠΈΠΌΡΡ Π² Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΡ.
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΌΠ½ΠΎΠΆΠΈΡ ΠΈΡ Π²ΠΌΠ΅ΡΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π²ΡΡΠ΅.
- ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Bash, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π·Π°Π²ΡΡΠ°ΡΠ½ΡΡ Π΄Π°ΡΡ. (ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ date )
- ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΌΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ, ΡΡΠΎ $ RANDOM Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ. ΠΡΠΎ ΡΠΈΡΠ»ΠΎ ΠΎΡ 0 Π΄ΠΎ 32767, ΡΡΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ. ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΡ (ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°: ΠΈΠ³ΡΠ°ΡΡ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ), ΡΡΠΎΠ±Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΎΡ 0 Π΄ΠΎ 100.
- Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠΈΠ³ΡΠ°Π΅ΠΌ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ ΡΠΊΡΠΈΠΏΡΠΎΠΌ. ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π΅Π³ΠΎ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΡΠΊΠ°Π·Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π²Π΅ΡΡ Π½ΠΈΠΉ ΠΏΡΠ΅Π΄Π΅Π» ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°. ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡΠ΅Π΄Π΅Π»? Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ. Π΅ΡΠ»ΠΈ Π±Ρ Ρ Π·Π°ΠΏΡΡΡΠΈΠ» ./random.sh 10 45, ΠΎΠ½ Π²Π΅ΡΠ½ΡΠ» Π±Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅ ΡΠΈΡΠ»Π° ΠΎΡ 10 Π΄ΠΎ 45.
.
ΠΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Bash
ΠΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Bash
ΠΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Bash — Bash Shell ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ 11 Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ².
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ². Π‘ΡΠΎΠ»Π±Π΅Ρ ΠΡΠΈΠΌΠ΅ΡΡ / ΠΠ°ΡΠΈΠ°Π½ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΡΠΊΡΡΡΠΈΡ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΡΠΈΠΌΠ΅ΡΡ / Π²Π°ΡΠΈΠ°Π½ΡΡ | |
+ | Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ — ΠΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΠΈΡΠ΅Π», ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ². | $ ((15 + 8)) ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ `expr 15 + 8`: 23 | |
— | ΠΡΡΠΈΡΠ°Π½ΠΈΠ΅ — ΠΡΡΠΈΡΠ»ΡΠ΅Ρ Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ. | $ ((15-8)) `expr 15-8` ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ: 7 | |
* | Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ — ΠΡΡΠΈΡΠ»ΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ². | $ ((15 * 8)) `expr 15 * 8` ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ: 120 | |
/ | ΠΠ΅Π»Π΅Π½ΠΈΠ΅ — Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° Π½Π° Π²ΡΠΎΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°ΡΡΠ½ΠΎΠ΅. | $ ((15/8)) `expr 15 / 8` ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ: 1 | |
** | ΠΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ — ΠΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°, Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°. | $ ((15 ** 8)) Κ»expr 15 ** 8` ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ: 2562890625 | |
% | Modulo — Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ Π΄Π΅Π»ΠΈΡΡΡ Π½Π° Π²ΡΠΎΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°Π½Π΄. | $ ((15% 8)) Κ»expr 15% 8` ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ: 7 | |
+ = | Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ — ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° Π½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ. |
((x + = 5)) ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ: 7 | |
— = | Π£ΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ΅ — ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° Π½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ. |
((x — = 5)) ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ: -3 | |
* = | Π£ΠΌΠ½ΠΎΠΆΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ — ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠΌΠ½ΠΎΠΆΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° Π½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ. |
((x * = 5)) ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ: 10 | |
/ = | Π Π°Π·Π΄Π΅Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ — ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ / ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ) ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ. |
((x / = 5)) ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ: 2 | |
% = | ΠΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ — ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ% ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°) ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ. |
((x% = 5)) ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ: 3 |
ΠΠ°ΠΊ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² Bash
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ:
ΠΠ²ΠΎΠΉΠ½Π°Ρ ΡΠΊΠΎΠ±ΠΊΠ°
ΠΠ²ΠΎΠΉΠ½Π°Ρ ΡΠΊΠΎΠ±ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΡΠΊΡΡΡΠΈΡ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π²ΠΎΠΉΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ Π΄Π»Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
bash-arithmetic-operators-example
#! / Bin / bash x = 10 y = 3 echo $ ((x + y)) # ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ echo $ (($ x + $ y)) # ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ echo $ ((x — y)) # Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ echo $ (($ x — $ y)) # ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ echo $ ((x * y)) # ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ echo $ (($ x * $ y)) # ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ echo $ ((x / y)) # Π΄Π΅Π»Π΅Π½ΠΈΠ΅ echo $ (($ x / $ y)) # ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ echo $ ((x ** y)) # Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ echo $ (($ x ** $ y)) # ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ echo $ (( x% y)) # ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ echo $ (($ x% $ y)) # ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ((x + = 4)) # ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ echo $ x ((X — = 4)) # ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ echo $ x ((x * = 4)) # ΡΠΌΠ½ΠΎΠΆΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ echo $ x ((x / = 4)) # ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ echo $ x ((X% = 4)) # ΠΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ echo $ x |
let ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ
ΠΠΎΠΌΠ°Π½Π΄Π° let ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ:
bash-arithmetic-operators-example
#! / Bin / bash x = 10 y = 3 z = 0 let «z = $ ((x + y))» # ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ let z = $ ((x + y)) # ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ Π±Π΅Π· Π΄Π²ΠΎΠΉΠ½ΡΡ ΠΊΠ°Π²ΡΡΠ΅ΠΊ, Π΅ΡΠ»ΠΈ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π½Π΅Ρ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² echo $ z let «z = $ ((x — y)) «# Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ let z = $ ((xy)) echo $ z let» z = $ ((x * y)) «# ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ let z = $ ((x * y)) echo $ z let «z = $ ((x / y))» # Π΄Π΅Π»Π΅Π½ΠΈΠ΅ let z = $ ((x / y)) echo $ z let «z = $ ((x ** y))» # Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ let z = $ ((x ** y)) echo $ z let «z = $ ((x% y)) «# ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ let z = $ ((x% y)) echo $ z let «x + = 4» # ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ echo $ x let «x — = 4» # ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ echo $ x let «x * = 4» # ΡΠΌΠ½ΠΎΠΆΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ echo $ x let «x / = 4» # ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ echo $ x let «x% = 4» # ΠΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ echo $ x |
ΠΠ±ΡΠ°ΡΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ
ΠΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΠΊΠ°Π²ΡΡΠ΅ΠΊ ΠΈ expr (ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ).ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ:
a = 5 b = 7 c = Κ»expr $ a + $ b` echo $ c # 12 |
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΏΠΎ Bash ΠΌΡ ΠΈΠ·ΡΡΠΈΠ»ΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ Bash Shell, Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ .
.