Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования Π½Π° языкС сцСнариСв ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 10

Автор МСндСль ΠšΡƒΠΏΠ΅Ρ€

Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Π΅Π΄ΡƒΡ‚ сСбя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, располоТСнныС Π²Π½ΡƒΡ‚Ρ€ΠΈ сцСнария, ΠΈ сам сцСнарий, возвращая ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. Код, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ сцСнариСм, опрСдСляСтся ΠΊΠΎΠ΄ΠΎΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° послСднСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. КомандС 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.