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

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

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

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 2.14. Экспорт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

1. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ прСдставим сцСнарий export2.

#!/bin/sh

echo "$foo"

echo "$bar"

2. Π’Π΅ΠΏΠ΅Ρ€ΡŒ сцСнарий export1. Π’ ΠΊΠΎΠ½Ρ†Π΅ сцСнария запускаСтся export2.

#!/bin/sh

foo="The first meta-syntactic variable"

export bar="The second meta-syntactic variable"

export2

Если Π²Ρ‹ запуститС ΠΈΡ…, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

$ <b>./export1</b>

The second meta-syntactic variable

$

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

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ export2 просто Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ значСния Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’ сцСнарии export1 Π·Π°Π΄Π°ΡŽΡ‚ΡΡ значСния ΠΎΠ±Π΅ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСрСмСнная bar помСчаСтся ΠΊΠ°ΠΊ экспортируСмая, поэтому, ΠΊΠΎΠ³Π΄Π° впослСдствии запускаСтся сцСнарий export2, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

foo
потСряно, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ
bar
экспортировано Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ сцСнарий. На экранС появляСтся пустая строка, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ
$foo
Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ содСрТит ΠΈ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ
null
ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ Π½ΠΎΠ²ΠΎΠΉ строки.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ пСрСмСнная Π±Ρ‹Π»Π° экспортирована ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΎΠ½Π° экспортируСтся Π² Π»ΡŽΠ±Ρ‹Π΅ сцСнарии, запускаСмыС ΠΈΠ· этой ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΈ Π² Π»ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ эти сцСнарии, ΠΈ Ρ‚.Π΄. Если Π±Ρ‹ сцСнарий export2 Π²Ρ‹Π·Π²Π°Π» Π΄Ρ€ΡƒΠ³ΠΎΠΉ сцСнарий, Π² Π½Π΅ΠΌ пСрСмСнная

bar
Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»Π° Π±Ρ‹ доступна.

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

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹

set -Π°
ΠΈΠ»ΠΈ
set -allexport
ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ соотвСтствСнно.

expr

Команда

expr
вычисляСт Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, составлСнноС ΠΈΠ· Π΅Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π§Π°Ρ‰Π΅ всСго ΠΎΠ½Π° примСняСтся для подсчСта простых арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅:

Ρ…=`expr $x + 1`

Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹

``
(обратная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ апостроф) Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ
Ρ…
ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
expr $Ρ… + 1
. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ синтаксичСской конструкции
$( )
вмСсто ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Ρ…=$(expr $Ρ… + 1)

Команда expr ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ большими возмоТностями, с Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ выраТСния. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ вычислСний пСрСчислСны Π² Ρ‚Π°Π±Π». 2.6.

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

ВычислСниС выраТСния Описания
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 | Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i>
, Ссли
Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1
Π½Π΅ Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС
Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> &amp; <i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
ΠΡƒΠ»ΡŒ, Ссли ΠΎΠ±Π° выраТСния Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС
Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> = <i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
РавСнство
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> &gt; <i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
Π‘ΠΎΠ»ΡŒΡˆΠ΅ Ρ‡Π΅ΠΌ
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> &gt;= <i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> &lt; <i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
МСньшС Ρ‡Π΅ΠΌ
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> &lt;= <i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
МСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> != <i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
НСравСнство
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> + <i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> β€” <i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
Π’Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> * <i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> / <i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
Π”Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°Ρ†Π΅Π»ΠΎ
<i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1</i> % <i>Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2</i>
ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ ΠΎΡ‚ дСлСния Π½Π°Ρ†Π΅Π»ΠΎ

Π’ соврСмСнных сцСнариях вмСсто ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

expr
ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ примСняСтся Π±ΠΎΠ»Π΅Π΅ эффСктивная синтаксичСская конструкция
$((...))
, которая Π±ΡƒΠ΄Π΅Ρ‚ описана Π΄Π°Π»Π΅Π΅ Π² этой Π³Π»Π°Π²Π΅.

printf

Команда

printf
Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² соврСмСнных ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°Ρ…. Π“Ρ€ΡƒΠΏΠΏΠ° X/Open ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅Π΅ слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ вмСсто ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
echo
для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ, каТСтся, лишь Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ этому совСту.

Π£ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ синтаксичСская запись.

<b>printf</b><i> &quot;строка Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°&quot; ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€1 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€2 ...</i>

Π‘Ρ‚Ρ€ΠΎΠΊΠ° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ограничСниями Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡƒΡŽ Π² языках программирования Π‘ ΠΈ Π‘++. Π“Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π°Π΄ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами. Π‘Ρ‚Ρ€ΠΎΠΊΠ° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° состоит ΠΈΠ· ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹Ρ… символов, escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΈ спСцификаторов прСобразования. ВсС символы строки Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΡ‚

\
ΠΈ
%
, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π½Π° экранС ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅.

Π’ Ρ‚Π°Π±Π». 2.7 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

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

Escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ОписаниС
\&quot;
Двойная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°
\\
Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ слэш
\a
Π—Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ сигнал Ρ‚Ρ€Π΅Π²ΠΎΠ³ΠΈ (Π·Π²ΠΎΠ½ΠΎΠΊ ΠΊΠΎΠ»ΠΎΠΊΠΎΠ»ΡŒΡ‡ΠΈΠΊΠ° ΠΈΠ»ΠΈ прСрывистый Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ сигнал)
\b
Π‘ΠΈΠΌΠ²ΠΎΠ» Backspace (стираниС слСва)
\c
ΠžΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°
\f
Π‘ΠΈΠΌΠ²ΠΎΠ» Form feed (ΠΏΠΎΠ΄Π°Ρ‡Π° Π±ΡƒΠΌΠ°Π³ΠΈ)
\n
Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²ΡƒΡŽ строку
\r
Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ
\t
Π‘ΠΈΠΌΠ²ΠΎΠ» табуляции
\v
Π‘ΠΈΠΌΠ²ΠΎΠ» Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ табуляции
\ooo
Один символ с Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ
ooo
\xHH
Один символ с ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ
HH