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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма UNIXΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 20

Автор РобачСвский АндрСй ΠœΠΈΡ…Π°ΠΉΠ»ΠΎΠ²ΠΈΡ‡

PS1=`uname -n">"

Π’ этом случаС, Ссли имя вашСй систСмы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, telemak, ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Π² систСму ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅:

telemak>

Π’Ρ‚ΠΎΡ€ΠΈΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ появляСтся, Ссли Π²Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ <Enter>, синтаксичСски Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ² Π²Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. НапримСр:

$ <b>while :Β Β Β Β  </b>
Β Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши <Enter>

&gt; <b>doΒ Β Β Β Β Β Β Β Β  </b>
Β Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши <Enter>

&gt; <b>echo ΠŸΡ€ΠΈΠ²Π΅Ρ‚!</b>
Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши <Enter>

&gt; <b>doneΒ Β Β Β Β Β Β  </b>
Β Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши <Enter>

ПослС этого Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ слово "ΠŸΡ€ΠΈΠ²Π΅Ρ‚!", Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π½Π° экран Π² бСсконСчном Ρ†ΠΈΠΊΠ»Π΅. (Если Π²Ρ‹ всС-Ρ‚Π°ΠΊΠΈ воспроизвСли этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ клавиши <Ctrl>+<C> ΠΈΠ»ΠΈ <Del>.)

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΈ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² Π΅Π³ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ автоматичСски. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, запускаСмыми ΠΈΠ· shell (ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ наслСдуСтся ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΌΠΈ процСссами). Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ shell ΠΈ Ρ‚Π΅ΠΌ самым ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡ… доступными для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, эти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ ΠΊΠ°ΠΊ экспортируСмыС. Π’ этом случаС ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ½ΠΈ автоматичСски ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ Π² Π΅Π΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅. НапримСр, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с элСктронной ΠΏΠΎΡ‡Ρ‚ΠΎΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ имя Ρ„Π°ΠΉΠ»Π° β€” ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ ящика Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ MAIL, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ полноэкранный Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ TERM. Разработанная Π²Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния. Для этого ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (getenv(3C) ΠΈ putenv(3C)), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ рассмотрим Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅.

ВстроСнныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

Помимо ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, опрСдСляСмых явно, shell ΠΈΠΌΠ΅Π΅Ρ‚ ряд Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, значСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ самим ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π½Π΅ контСкста получСния Π΅Π΅ значСния Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла (Ρ‚.Π΅. Π½Π΅ сущСствуСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ #, ΠΈΠΌΠ΅Π΅Ρ‚ смысл лишь Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ $#). Π­Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π». 1.8.

Π’Π°Π±Π»ΠΈΡ†Π° 1.8. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ shell

$1, $2, ...
ΠŸΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ скрипта
$#
Число ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² скрипта
$?
Код Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° послСднСго Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ процСсса
$5
PID Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ shell
$!
PID послСднСго процСсса, Π·Π°ΠΏΡƒΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅
$*
ВсС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ скрипту. ΠŸΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ΅ слово, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ:
&quot;$*&quot; = &quot;$1 $2 $3 ...&quot;
[email protected]
ВсС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ скрипту. ΠŸΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ слова, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ:
&quot;$*&quot;Β =Β &quot;$1&quot;Β &quot;$2&quot;Β &quot;$3 ...&quot;

Π­Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС, основная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΈΡ… примСнСния β€” скрипты. Рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

ВСкст скрипта test1.sh:

#!/bin/sh

echo скрипт $0

echo $1 $2 $3

shift

echo $1 $2 $3

Запуск скрипта

$ <b>./test1.sh a1 a2 a3 a4 a5</b>

скрипт ./test.sh

a1 a2 a3

a2 a3 a4

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ $1, $2, ... $9 содСрТат значСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² β€” Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ скрипта. Π’ $1 находится ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ (a1), Π² $2 β€” a2 ΠΈ Ρ‚.Π΄. Π΄ΠΎ дСвятого Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. ΠŸΡ€ΠΈ нСобходимости ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ большСС число Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², трСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ shift n, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‰ΡƒΡŽ сдвиг Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π° n ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ). ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ скрипт ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ этот ΠΏΡ€ΠΈΠ΅ΠΌ. Π’ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $0 находится имя Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ скрипта. Π—Π΄Π΅ΡΡŒ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ полная аналогия с массивом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² argv[], ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° языкС Π‘.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ $# Ρ€Π°Π²Π½ΠΎ числу ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π•Π³ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ соотвСтствия числа Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΌΡƒ.

ВСкст скрипта test2.sh:

#!/bin/sh

if [ $# -lt 2 ]

then

Β echo usage: $0 arg1 arg2

Β exit 1

fi

Запуск скрипта

$ <b>test2.sh</b>

usage: test2.sh arg1 arg2

$ <b>test2.sh h1 h2</b>

$

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ использовано условноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ if ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ рассмотрим Π½ΠΈΠΆΠ΅.

Код Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° послСднСй Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ($?) ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² условных выраТСниях. По ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π°Ρ‡ΠΈ считаСтся ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°, Ρ€Π°Π²Π½Ρ‹ΠΉ 0, Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠΉ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎΠ± ошибкС. Код Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° скриптов гСнСрируСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ exit n, Π³Π΄Π΅ n β€” ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° (см. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€). Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ опрСдСляСтся, зарСгистрирован Π»ΠΈ Π² систСмС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ "sergey". Для этого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ grep(1) производится поиск слова sergey Π² Ρ„Π°ΠΉΠ»Π΅ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ. Π’ случаС ΡƒΠ΄Π°Ρ‡ΠΈ grep(1) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0. Если слово Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, Ρ‚ΠΎ grep(1) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС это ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ sergey Π² систСмС Π½Π΅ зарСгистрирован.

ВСкст скрипта test3.sh:

#!/bin/sh

grep sergey /etc/passwd

if [ $? -ne 0 ]

then

Β echo ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ sergey Π² систСмС Π½Π΅ зарСгистрирован

fi

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ процСсс Π² UNIX ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ процСсса, PID. Запуская скрипт, Π²Ρ‹ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚Π΅ Π² систСмС процСсс с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ PID. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ PID сохраняСтся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $$. Π­Ρ‚Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² названиях Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡ… ΠΈΠΌΠ΅Π½Π° Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: