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

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

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

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² систСмах UNIX ΠΈ Linux ΠΌΠ½ΠΎΠ³ΠΎΠ΅ основано Π½Π° ΠΈΠ΄Π΅ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ², Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ часто Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Допустим, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ GIF Π² Ρ„Π°ΠΉΠ»Ρ‹ JPEG с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ cjpeg:

$ <b>cjpeg image.gif &gt; image.jpg</b>

ΠŸΠΎΡ€ΠΎΠΉ Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π½Π°Π΄ большим числом Ρ„Π°ΠΉΠ»ΠΎΠ². Как Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅? Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ просто:

#!/bin/sh

for image in *.gif

do

Β cjpeg $image &gt; {image%%gif}jpg

done

Π­Ρ‚ΠΎΡ‚ сцСнарий, giftojpeg, создаСт Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° GIF Ρ„Π°ΠΉΠ» Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° JPEG.

ВстроСнныС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹

ΠžΡΠΎΠ±Ρ‹ΠΉ способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ· сцСнария ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π΅ β€” использованиС встроСнного Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (here document). Π’Π°ΠΊΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ позволяСт ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½Π° Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΡ… ΠΈΠ· сцСнария.

ВстроСнный Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ начинаСтся со слуТСбных символов

&lt;&lt;
, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ слСдуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ символьная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π°ΡΡΡ ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹
&lt;&lt;
ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС заставляСт Π²Ρ…ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π²ΠΎ встроСнный Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ символов дСйствуСт ΠΊΠ°ΠΊ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€, указывая ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅, Π³Π΄Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ встроСнный Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. ΠœΠ°Ρ€ΠΊΠ΅Ρ€Π½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² строки, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, поэтому Π»ΡƒΡ‡ΡˆΠ΅ всСго ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π΅ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰Π΅ΠΉΡΡ ΠΈ Ρ‡Π΅Ρ‚ΠΊΠΎ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‰Π΅ΠΉΡΡ.

Рассмотрим ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 2.19.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 2.19. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ встроСнных Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ просто ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅

cat
.

#!/bin/sh

cat &lt;&lt;!FUNKY!

hello

this is a here

document

!FUNKY!

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

hello

this is a here

document

ВстроСнныС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ странным срСдством, Π½ΠΎ ΠΎΠ½ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, Ρ‚.ΠΊ. ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΈ ΡΠ½Π°Π±ΠΆΠ°Ρ‚ΡŒ ΠΈΡ… ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π²Π²ΠΎΠ΄ΠΎΠΌ. Но особСнно часто ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΈΠ· сцСнария Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΠΎΡ€Ρ†ΠΈΠΉ тСкста, ΠΊΠ°ΠΊ Π²Ρ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΈ ΠΏΡ€ΠΈ этом ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ нСобходимости ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

echo
для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠΉ строки. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΡΠΊΠ»ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π½Π°ΠΊΠΈ (
!
) с Π΄Π²ΡƒΡ… сторон ΠΎΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСсколько строк Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ способом, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² сцСнарии строчный Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ed ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅ΠΌΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· встроСнного Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 2.20).

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 2.20. Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ встроСнного Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

1. НачнСм с Ρ„Π°ΠΉΠ»Π°, Π½Π°Π·Π²Π°Π½Π½ΠΎΠ³ΠΎ a_text_file ΠΈ содСрТащСго ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

That is line 1

That is line 2

That is line 3That is line 4

2. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ», совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ встроСнный Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ed:

#!/bin/sh

ed a_text_file &lt;&lt;!FunkyStuff!

3

d

., \$s/is/was/ w

q

!FunkyStuff!

exit 0

Если Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ этот сцСнарий, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ„Π°ΠΉΠ» содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

That is line 1

That is line 2

That was line 4

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ запускаСт Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ed ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΅ΠΌΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ строкС, удалСния строки ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΌΠ΅Π½Ρ‹ Π΅Π΅ содСрТимым Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строки (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ строка 3 (line 3) Π±Ρ‹Π»Π° ΡƒΠ΄Π°Π»Π΅Π½Π°, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ тСкущая строка β€” послСдняя строка Ρ„Π°ΠΉΠ»Π°). Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ed бСрутся ΠΈΠ· строк сцСнария, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… встроСнный Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, строк ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°ΠΌΠΈ

!Funky Stuff!
.

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

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π·Π½Π°ΠΊ

\
Π²Π½ΡƒΡ‚Ρ€ΠΈ встроСнного Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, примСняСмый для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ подстановки, выполняСмой ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ. Π‘ΠΈΠΌΠ²ΠΎΠ»
\
экранируСт Π·Π½Π°ΠΊ
$
, поэтому ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ слСдуСт ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ вмСсто строки
\$s/is/was/
Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρƒ Π½Π΅Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ Π½Π΅Ρ‚. ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° просто ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ тСкст
\$
ΠΊΠ°ΠΊ $, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ смоТСт ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ e

ΠžΡ‚Π»Π°Π΄ΠΊΠ° сцСнариСв

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ сцСнарии ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ довольно Π»Π΅Π³ΠΊΠΎ, хотя ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… срСдств ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π½Π΅ сущСствуСт. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ Π΄Π°Π΄ΠΈΠΌ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ².

Когда Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка, командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран Π½ΠΎΠΌΠ΅Ρ€ строки, содСрТащСй ΠΎΡˆΠΈΠ±ΠΊΡƒ. Если ошибка сразу Π½Π΅ Π²ΠΈΠ΄Π½Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ нСсколько Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄

echo
для отобраТСния содСрТимого ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, просто вводя ΠΈΡ… Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сцСнарии ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ, Π½Π΅Ρ‚ Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΏΡ€ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ΅ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ сцСнария. Основной способ отслСТивания Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ выявляСмых ошибок β€” Π·Π°Π΄Π°Π½ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. Для этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠΏΡ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки послС запуска ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

set
. Π’ Ρ‚Π°Π±Π». 2.19 пСрСчислСны эти ΠΎΠΏΡ†ΠΈΠΈ.

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

ΠžΠΏΡ†ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠžΠΏΡ†ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
set
ОписаниС
sh -n &lt;<i>сцСнарий</i>&gt;
set -ΠΎ noexecΒ  set -n
Волько провСряСт синтаксичСскиС ошибки; Π½Π΅ выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
sh -v &lt;<i>сцСнарий</i>&gt;
set -ΠΎ verboseΒ  set -v
Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ
sh -Ρ… &lt;<i>сцСнарий</i>&gt;
set -ΠΎ xtraceΒ  set -x
Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ послС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки
sh -u &lt;<i>сцСнарий</i>&gt;
set -o nounsetΒ  set -u
Π’Ρ‹Π΄Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ошибкС ΠΏΡ€ΠΈ использовании Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ