ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ ΡΡΠ΅Π½Π°ΡΠΈΡ, ΠΈ ΡΠ°ΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Ρ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ. ΠΠΎΠ΄, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠ΅ΠΌ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ΄ΠΎΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΠΎΠΌΠ°Π½Π΄Π΅ exit ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°, Π² Π²ΠΈΠ΄Π΅: exit nnn, Π³Π΄Π΅ nnn -- ΡΡΠΎ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° (ΡΠΈΡΠ»ΠΎ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 0 - 255).
ΠΠΎΠ³Π΄Π° ΡΠ°Π±ΠΎΡΠ° ΡΡΠ΅Π½Π°ΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ exit Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΡΠΎ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ΄ΠΎΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.
ΠΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $?. ΠΠΎΡΠ»Π΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $? Ρ ΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΈΡΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Π² ΡΡΠ½ΠΊΡΠΈΠΈ. Π’Π°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π² Bash ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ "Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅" ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ. ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ, ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ, ΠΎΠ±ΡΠ°ΡΠΈΠ²ΡΠΈΡΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $?, Ρ.Π΅. ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΈΡΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ.
ΠΡΠΈΠΌΠ΅Ρ 6-1. Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ / ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ
#!/bin/bash
echo hello
echo $? # ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° = 0, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ.
lskdf # ΠΠ΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°.
echo $? # ΠΠ΅Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ.
echo
exit 113 # Π―Π²Π½ΠΎΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ° 113.
# ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π½Π°Π±ΡΠ°ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ "echo $?"
# ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°.
# Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, 'exit 0' ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΡΠΏΠ΅ΡΠ½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅,
#+ Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ.
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $? ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (ΡΠΌ. ΠΡΠΈΠΌΠ΅Ρ 12-27 ΠΈ ΠΡΠΈΠΌΠ΅Ρ 12-13).
Π‘ΠΈΠΌΠ²ΠΎΠ» !, ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΡΠΏΠ°ΡΡ ΠΊΠ°ΠΊ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ "ΠΠ" Π΄Π»Ρ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ 6-2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° ! Π΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°
true # Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° "true".
echo "ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ \"true\" = $?" # 0
! true
echo "ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ \"! true\" = $?" # 1
# ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΡΠΈΠΌΠ²ΠΎΠ» "!" ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠ΄Π΅Π»ΡΡΡ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠΌ.
# !true Π²ΡΠ·ΠΎΠ²Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ "command not found"
# Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ S.C.
Π ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠ΄Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π΄Π°Π²Π°ΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
ΠΠ»Π°Π²Π° 7. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ»ΠΎΠ²ΠΈΠΉ
ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π»ΡΠ±ΠΎΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΡΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΉ, ΡΡΠΎΠ±Ρ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΏΡΡΡ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ. Π Bash, Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΉ, ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° test, ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΡΠΊΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ ΡΡΠ»ΠΎΠ²Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ if/then.
7.1. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΉ
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ if/then ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ -- ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄ 0 (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ 0 ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ "ΡΡΠΏΠ΅Ρ "), ΠΈ Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΠ°ΠΊ, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠ΄Π½Ρ, ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅, ΠΊΠΎΠΌΠ°Π½Π΄, ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π° ΡΠ»ΠΎΠ²ΠΎΠΌ then.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° -- [ (Π»Π΅Π²Π°Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½Π°Ρ ΡΠΊΠΎΠ±ΠΊΠ°). ΠΠ½Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ test, ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ (Ρ.Π΅. Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ, Π² ΡΠΌΡΡΠ»Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ). ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ²ΠΎΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠ°ΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ (0 -- ΠΈΡΡΠΈΠ½Π°, 1 -- Π»ΠΎΠΆΡ).
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 2.02, Bash ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π² ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ [[ ... ]] ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ test, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π±ΠΎΠ»Π΅Π΅ Π·Π½Π°ΠΊΠΎΠΌΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ, ΠΏΠΈΡΡΡΠΈΠΌ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: [[ -- ΡΡΠΎ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ, Π° Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°.
Bash ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅Ρ [[ $a -lt $b ]] ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°.
ΠΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ (( ... )) ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ let ... ΡΠ°ΠΊ ΠΆΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΊΠΎΠ΄ 0, Π΅ΡΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΡΡΠ°Π²ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ.
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ let "1<2" Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 0 (ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ "1<2" -- "1", ΠΈΠ»ΠΈ "ΠΈΡΡΠΈΠ½Π°")
(( 0 && 1 )) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 1 (ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ "0 && 1" -- "0", ΠΈΠ»ΠΈ "Π»ΠΎΠΆΡ")
Π£ΡΠ»ΠΎΠ²Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ if ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΊΠΎΠ΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ.
if cmp a b &> /dev/null # ΠΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Π°.
then echo "Π€Π°ΠΉΠ»Ρ a ΠΈ b ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ."
else echo "Π€Π°ΠΉΠ»Ρ a ΠΈ b ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡ."
fi
if grep -q Bash file
then echo "Π€Π°ΠΉΠ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, ΠΎΠ΄Π½ΠΎ ΡΠ»ΠΎΠ²ΠΎ Bash."
fi
if COMMAND_WHOSE_EXIT_STATUS_IS_0_UNLESS_ERROR_OCCURRED
then echo "ΠΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ."
else echo "ΠΠ±Π½Π°ΡΡΠΆΠ΅Π½Π° ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ."
fi
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ if/then Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ.
if echo "Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ *if* Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²Π½ΡΡΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ *if*."
if [[ $comparison = "integer" ]]
then (( a < b ))
else
[[ $a < $b ]]
fi
then
echo '$a ΠΌΠ΅Π½ΡΡΠ΅ $b'
fi
ΠΡΠΎ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ "if-test" Π»ΡΠ±Π΅Π·Π½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΎ Stephane Chazelas.
ΠΡΠΈΠΌΠ΅Ρ 7-1. Π§ΡΠΎ Π΅ΡΡΡ "ΠΈΡΡΠΈΠ½Π°"?
#!/bin/bash
echo
echo "ΠΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ \"0\""
if [ 0 ] # Π½ΠΎΠ»Ρ
then
echo "0 -- ΡΡΠΎ ΠΈΡΡΠΈΠ½Π°."
else
echo "0 -- ΡΡΠΎ Π»ΠΎΠΆΡ."
fi # 0 -- ΡΡΠΎ ΠΈΡΡΠΈΠ½Π°.
echo
echo "ΠΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ \"1\""
if [ 1 ] # Π΅Π΄ΠΈΠ½ΠΈΡΠ°
then
echo "1 -- ΡΡΠΎ ΠΈΡΡΠΈΠ½Π°."
else
echo "1 -- ΡΡΠΎ Π»ΠΎΠΆΡ."
fi # 1 -- ΡΡΠΎ Π»ΠΎΠΆΡ.
echo
echo "Testing \"-1\""
if [ -1 ] # ΠΌΠΈΠ½ΡΡ ΠΎΠ΄ΠΈΠ½
then
echo "-1 -- ΡΡΠΎ ΠΈΡΡΠΈΠ½Π°."
else
echo "-1 -- ΡΡΠΎ Π»ΠΎΠΆΡ."
fi # -1 -- ΡΡΠΎ ΠΈΡΡΠΈΠ½Π°.
echo
echo "ΠΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ \"NULL\""
if [ ] # NULL (ΠΏΡΡΡΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅)
then
echo "NULL -- ΡΡΠΎ ΠΈΡΡΠΈΠ½Π°."
else
echo "NULL -- ΡΡΠΎ Π»ΠΎΠΆΡ."
fi # NULL -- ΡΡΠΎ Π»ΠΎΠΆΡ.
echo
echo "ΠΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ \"xyz\""
if [ xyz ] # ΡΡΡΠΎΠΊΠ°
then
echo "Π‘Π»ΡΡΠ°ΠΉΠ½Π°Ρ ΡΡΡΠΎΠΊΠ° -- ΡΡΠΎ ΠΈΡΡΠΈΠ½Π°."
else
echo "Π‘Π»ΡΡΠ°ΠΉΠ½Π°Ρ ΡΡΡΠΎΠΊΠ° -- ΡΡΠΎ Π»ΠΎΠΆΡ."
fi # Π‘Π»ΡΡΠ°ΠΉΠ½Π°Ρ ΡΡΡΠΎΠΊΠ° -- ΡΡΠΎ ΠΈΡΡΠΈΠ½Π°.
echo
echo "ΠΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ \"\$xyz\""
if [ $xyz ] # ΠΡΠΎΠ²Π΅ΡΠΊΠ°, Π΅ΡΠ»ΠΈ $xyz ΡΡΠΎ null, Π½ΠΎ...
# ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
then
echo "ΠΠ΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ -- ΡΡΠΎ ΠΈΡΡΠΈΠ½Π°."
else
echo "ΠΠ΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ -- ΡΡΠΎ Π»ΠΎΠΆΡ."
fi # ΠΠ΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ -- ΡΡΠΎ Π»ΠΎΠΆΡ.
echo
echo "ΠΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ \"-n \$xyz\""
if [ -n "$xyz" ] # ΠΠΎΠ»Π΅Π΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ.
then
echo "ΠΠ΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ -- ΡΡΠΎ ΠΈΡΡΠΈΠ½Π°."
else
echo "ΠΠ΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ -- ΡΡΠΎ Π»ΠΎΠΆΡ."
fi # ΠΠ΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ -- ΡΡΠΎ Π»ΠΎΠΆΡ.
echo
xyz= # ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° ΠΏΡΡΡΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
echo "ΠΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ \"-n \$xyz\""
if [ -n "$xyz" ]
then
echo "ΠΡΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ -- ΡΡΠΎ ΠΈΡΡΠΈΠ½Π°."
else
echo "ΠΡΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ -- ΡΡΠΎ Π»ΠΎΠΆΡ."
fi # ΠΡΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ -- ΡΡΠΎ Π»ΠΎΠΆΡ.
echo
# ΠΡΠ³Π΄Π° "Π»ΠΎΠΆΡ" ΠΈΡΡΠΈΠ½Π½Π°?
echo "ΠΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ \"false\""
if [ "false" ] # ΡΡΠΎ ΠΎΠ±ΡΡΠ½Π°Ρ ΡΡΡΠΎΠΊΠ° "false".
then
echo "\"false\" -- ΡΡΠΎ ΠΈΡΡΠΈΠ½Π°." #+ ΠΈ ΠΎΠ½Π° ΠΈΡΡΠΈΠ½Π½Π°.
else
echo "\"false\" -- ΡΡΠΎ Π»ΠΎΠΆΡ."
fi # "false" -- ΡΡΠΎ ΠΈΡΡΠΈΠ½Π°.
echo
echo "ΠΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ \"\$false\"" # ΠΠΏΡΡΡ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ.
if [ "$false" ]
then
echo "\"\$false\" -- ΡΡΠΎ ΠΈΡΡΠΈΠ½Π°."
else
echo "\"\$false\" -- ΡΡΠΎ Π»ΠΎΠΆΡ."
fi # "$false" -- ΡΡΠΎ Π»ΠΎΠΆΡ.
# Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠ² ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
echo
exit 0
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅. ΠΠ±ΡΡΡΠ½ΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π² ΠΡΠΈΠΌΠ΅Ρ 7-1.