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

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

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

Β command

Β ...

Β ;;

<i>шаблон2</i>)

Β command

Β ...

Β ;;

*)

Β command

Β ...

Β ;;

esac

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

<i>слово</i>
сравниваСтся с шаблонами, начиная с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ. Если совпадСниС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заканчиваСтся двумя символами ';'. Π¨Π°Π±Π»ΠΎΠ½Ρ‹ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ масок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ рассмотрСны Π½Π°ΠΌΠΈ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ "ΠŸΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠΈ, выполняСмыС ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ". Π Π°Π·Π΄Π΅Π» с шаблоном '*' Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ Ρ€Π°Π·Π΄Π΅Π»Ρƒ default Π² синтаксисС сСлСктора switch языка Π‘: Ссли совпадСния с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ шаблонами Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Π΄Π΅Π»Π° '*)'. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° использования сСлСктора ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ скрипт запуска ΠΈ останова систСмы ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Π² SCO UNIX.

state=$1

set `who -r`

case $state in

'start')

Β if [ $9 = &quot;2&quot; -o $9 = &quot;3&quot; ]

Β then

Β  exit

Β fi

Β [ -f /usr/lib/lpshed ] &amp;&amp; /usr/lib/lpshed

Β ;;

'stop')

Β [ -f /usr/lib/lpshut ] &amp;&amp; /usr/lib/lpshut

Β ;;

*)

Β echo &quot;usage $0 start|stop&quot;

Β ;;

esac

Π’ случаС, ΠΊΠΎΠ³Π΄Π° скрипт Π²Ρ‹Π·Π²Π°Π½ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ

start
, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ запуск систСмы ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ скрипта β€”
stop
, Ρ‚ΠΎ систСма ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ остановлСна. Запуск скрипта с Π»ΡŽΠ±Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ сообщСния ΠΎΠ± ошибкС.

Π’Π²ΠΎΠ΄

Как ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, присвоСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ явно ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Команда read прСдоставляСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ значСния, считанныС ΠΈΠ· стандартного ΠΏΠΎΡ‚ΠΎΠΊΠ° Π²Π²ΠΎΠ΄Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ строка, ввСдСнная ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈΠ»ΠΈ считанная ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π² случаС пСрСнаправлСния ΠΏΠΎΡ‚ΠΎΠΊΠ°.

Команда read считываСт строку ΠΈΠ· стандартного ΠΏΠΎΡ‚ΠΎΠΊΠ° Π²Π²ΠΎΠ΄Π° ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ присваиваСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², значСния слов строки. Если число слов Π² строкС ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ число ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ Π² послСднСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ сохранСны всС ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ слова. ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ это Π½Π° простом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

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

#!/bin/sh

echo &quot;input: &quot;

while read var1 var2 var3

do

Β echo var1=$var1

Β echo var2=$var2

Β echo var3=$var3

Β echo &quot;input: &quot;

done

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

$ <b>test5.sh</b>

input: <b>ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹Β read</b>

var1=ΠΏΡ€ΠΈΠΌΠ΅Ρ€

var2=Ρ€Π°Π±ΠΎΡ‚Ρ‹

var3=ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ read

input: <b>Π΅Ρ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€</b>

var1=Π΅Ρ‰Π΅

var2=ΠΏΡ€ΠΈΠΌΠ΅Ρ€

var3=

input: <b>^D</b>

$

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ read Π² Ρ†ΠΈΠΊΠ»Π΅ считываСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄. Π¦ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° достигнут ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π° (Ρ‡Ρ‚ΠΎ эквивалСнтно ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ Π²Π²ΠΎΠ΄Ρƒ <Ctrl>+<D>), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ этом read Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ (ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Ρ€Π°Π²Π΅Π½ 1) ΠΈ while Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ число Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… слов ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ количСство ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, поэтому Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

var3
состоит ΠΈΠ· Π΄Π²ΡƒΡ… слов. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
var3
пусто.

БистСма управлСния заданиями

ΠšΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ заданиями. Для Bourne shell (/bin/sh), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ рассматриваСм, систСму управлСния заданиями Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π½Ρ‹ΠΉ Π΅ΠΌΡƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ /bin/jsh. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ этот ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π΅ ΠΆΠ΅ возмоТности.

Π’ систСмС управлСния заданиями каТдая ΠΊΠΎΠΌΠ°Π½Π΄Π° (простая ΠΈΠ»ΠΈ составная), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ запускаСт со своСго Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, называСтся Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ. ВсС задания ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π»ΠΈΠ±ΠΎ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π»ΠΈΠ±ΠΎ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π»ΠΈΠ±ΠΎ Π±Ρ‹Ρ‚ΡŒ приостановлСны. Π—Π°Π΄Π°Π½ΠΈΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· этих состояний ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ рядом характСристик:

БостояниС задания Π₯арактСристики
ВыполняСтся Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
ВыполняСтся Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π—Π°Π΄Π°Π½ΠΈΡŽ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ Π²Π²ΠΎΠ΄ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» опрСдСляСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ установками
ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π—Π°Π΄Π°Π½ΠΈΠ΅ Π½Π΅ выполняСтся

КаТдоС Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ запускС ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ задания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… систСмы управлСния. Бинтаксис Π½ΠΎΠΌΠ΅Ρ€Π° задания, примСняСмый Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ…:

%<i>jobid</i>

Π³Π΄Π΅

<i>jobid</i>
ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ значСния:

%
ΠΈΠ»ΠΈ
+
Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ β€” самоС послСднСС Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ΅ ΠΈΠ»ΠΈ вновь Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅
-
ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ (ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ)
?<i>строка</i>
Π—Π°Π΄Π°Π½ΠΈΠ΅, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ
<i>строка</i>
присутствуСт Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС запуска
n
Π—Π°Π΄Π°Π½ΠΈΠ΅ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ n
<i>pref</i>
Π—Π°Π΄Π°Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ прСфиксом
<i>pref</i>
, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΌΠ°Π½Π΄Π° ls(1), запущСнная Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, адрСсуСтся Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ %ls