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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 18

Автор ΠœΡΡ‚ΡŒΡŽ НСйл

ΠœΡ‹ прСдставим ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

test
Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ условия: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ наличия Ρ„Π°ΠΉΠ»Π°. Для Π½Π΅Π΅ понадобится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°:
test -f &lt;<i>имя_Ρ„Π°ΠΉΠ»Π°</i>&gt;
, поэтому Π² сцСнарии ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ

if test -f fred.c

then

Β ...

fi

To ΠΆΠ΅ самоС ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

if [ -f fred.c ]

then

Β ...

fi

Код Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

test
(Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π»ΠΈ условиС) опрСдСляСт, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ условный ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ скобкой

[
ΠΈ провСряСмым условиСм. Π­Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ, Ссли Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ символ
[
β€” это всС Ρ€Π°Π²Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ
test
, Π° послС ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π».

Если Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ слово

then
Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ строкС, Ρ‡Ρ‚ΠΎ ΠΈ
if
, Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ с запятой для отдСлСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
test
ΠΎΡ‚
then
:

if [ -f fred.c ]; then

Β ...

fi

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ условий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅

test
, дСлятся Π½Π° Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ°: строковыС сравнСния, числовыС сравнСния ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² (file conditionals). Π­Ρ‚ΠΈ Ρ‚ΠΈΠΏΡ‹ условий описаны Π² Ρ‚Π°Π±Π». 2.4.

Π’Π°Π±Π»ΠΈΡ†Π° 2.4

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ условий Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
БравнСния строк
<i>Π‘Ρ‚Ρ€ΠΎΠΊΠ°1 = Π‘Ρ‚Ρ€ΠΎΠΊΠ°2</i>
True
(истина), Ссли строки ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹
<i>Π‘Ρ‚Ρ€ΠΎΠΊΠ°1 != Π‘Ρ‚Ρ€ΠΎΠΊΠ°2</i>
True
(истина), Ссли строки Ρ€Π°Π·Π½Ρ‹Π΅
-n<i> Π‘Ρ‚Ρ€ΠΎΠΊΠ°</i>
True
(истина), Ссли
Π‘Ρ‚Ρ€ΠΎΠΊΠ°
Π½Π΅
null
-z <i>Π‘Ρ‚Ρ€ΠΎΠΊΠ°</i>
True
(истина), Ссли
<i>Π‘Ρ‚Ρ€ΠΎΠΊΠ°</i> null
(пустая строка)
БравнСния чисСл
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> -eq <i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
True
(истина), Ссли выраТСния Ρ€Π°Π²Π½Ρ‹
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> -ne<i> Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
True
(истина), Ссли выраТСния Π½Π΅ Ρ€Π°Π²Π½Ρ‹
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> -gt Π’Ρ‹<i>Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
True
(истина), Ссли
Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1
большС, Ρ‡Π΅ΠΌ
Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> -ge <i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
True
(истина), Ссли
Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1
нС мСньшС
Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> -lt <i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
True
(истина), Ссли
Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1
мСньшС, Ρ‡Π΅ΠΌ
Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> -lΠ΅<i> Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
True
(истина), Ссли
Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1
нС большС
Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2
! <i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅</i>
True
(истина), Ссли
Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
Π»ΠΎΠΆΠ½ΠΎ, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚
Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Ρ„Π»Π°Π³
-d <i>Ρ„Π°ΠΉΠ»</i>
True
(истина), Ссли
Ρ„Π°ΠΉΠ»
β€” ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³
-Π΅<i> Ρ„Π°ΠΉΠ»</i>
True
(истина), Ссли
Ρ„Π°ΠΉΠ»
сущСствуСт. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ, опция
-e
Π½Π΅ Π±Ρ‹Π»Π° пСрСносима Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, поэтому ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ примСняСтся
-f
-f <i>Ρ„Π°ΠΉΠ»</i>
True
(истина), Ссли
Ρ„Π°ΠΉΠ»
β€” ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»
-g <i>Ρ„Π°ΠΉΠ»</i>
True
(истина), Ссли для
Ρ„Π°ΠΉΠ»Π°
установлСн Π±ΠΈΡ‚ set-group-id
-r<i> Ρ„Π°ΠΉΠ»</i>
True
(истина), Ссли
<i>Ρ„Π°ΠΉΠ»</i>
доступСн для чтСния
-s <i>Ρ„Π°ΠΉΠ»</i>
True
(истина), Ссли
<i>Ρ„Π°ΠΉΠ»</i>
Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°
-u<i> Ρ„Π°ΠΉΠ»</i>
True
(истина), Ссли для
Ρ„Π°ΠΉΠ»Π°
установлСн Π±ΠΈΡ‚ set-user-id
-v <i>Ρ„Π°ΠΉΠ»</i>
True
(истина), Ссли
Ρ„Π°ΠΉΠ»
доступСн для записи
-Ρ…<i> Ρ„Π°ΠΉΠ»</i>
True
(истина), Ссли
<i>Ρ„Π°ΠΉΠ» </i>
β€” исполняСмый Ρ„Π°ΠΉΠ»