Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
26
Добавлен:
27.03.2016
Размер:
341.5 Кб
Скачать

Wed Feb 15 21:49:20 1984

$_

(Wed Feb 15 21:49:20 1984)

$1 $2 $3 $4 $5

$ echo $4

21:49:20

$_

$ echo ‘DATE : $1 $2 $3 $5 TIME : $4’

DATE : Wed Feb 15 1984 TIME : 21:49:20

$_

Щоб використати позиційний параметр з номером більшим за $9 використовують коанду shift, яка зсовує аргументи на одну позицію вліво

$4 > $3, $3 > $2, $2 > $1, а $1 зникає.

$ echo $1 $2 $3 $4 $5 $6 $7 $8 $9

arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9

$ shift

$ echo $1 $2 $3 $4 $5 $6 $7 $8 $9

arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9

За допомогою * можна генерувати номер будь-якого позиційного параметра.

$ echo $*

arg2…arg11

$ cat main

if subpro

then echo ‘Exit status is zero’

else echo ‘Exit status is non-zero’

fi

$ cat subpro

HERE = ‘pwd’

Status = 0

:::

exit $status

$_

Subpro передає змінній status значення 0, яке приводить до виводу повідомлення Exit status is zero

Цикл for організує умовний цикл

For variable in list

do [ виконання команди від do до done]

done

Команда for використовує слово з list як нове значення змінної variable, а потім перевіряє це нове значення. Якщо variable має припустиме значення, то команди між do та done виконуються, якщо список закінчується, виконується наступна за done команда.

$ cat example

list =’word1 word2 word3 word4’

for VAL in $list

do echo $VAL

done

echo ‘END OF LIST’

LIST

$_

  1. $ cat rebounce

one two three

for VAL

do echo $VAL

done

$_

VAL приймає значення аргументів процедури, які передаються інтерпритатору shell.

Shell має комбінацію операторів else та if, що дозволяє писати більш короткі програми.

$ cat checkname

if expr “$1” : “Mark” > /dev/null

then echo Matching word is Mark

else if expr “$1” : “John” > /dev/null

then echo Matching word is John

else if expr “$1” : “Dennis” > /dev/null

then echo Matching word is Dennis

else echo *** No match ***

fi

fi

fi

$_

$ cat multiloop $ multiloop

while true LOOP1

do echo LOOP1 LOOP2

until false ц.1 LOOP3

do echo LOOP2 LOOP1

while true ц.2 LOOP2

do echo LOOP3 LOOP3

break цю3 LOOP1

done LOOP2

done LOOP3

done ………….

якщо поставити break 3, то це призведе до виходу за межі всіх трьох циклів та завершення програми.

$ cat multiloop $multiloop

while true LOOP1

do echo LOOP1 LOOP2

until false ц.1 LOOP3

do echo LOOP2 $_

while true ц.2

do echo LOOP3

break ц.3

done

done

done

За допомогою команди continue можна продовжити виконання програми з оператором for або while, який знаходиться ближче до команди. Якщо у continue задати кількість рівнів, то програма почне виконання з вказаного рівня.

While true

Do command list3

Until false

Do command list2

While true

Do command list1

Continue $level

Done

done

done

Якщо level має значення 2, то виконання почнеться з until, якщо 3 – то з циклу while, якщо level не встановлено (або 1), то програма буде виконуватись у самому внутрішньому циклі while. Break та continue виводять програму з поточного циклу.

За допомогою exit виконує зупинку всієї процедури. При цьому у програму, що її викликає передається код 0 (false).

Якщо намагатися дописати додаткові символи у кінець імені змінної

$ far=tele

$ TV=farvision

$ echo $TV

$_

У цьому випадку shell присвоює змінній TV значення порожнього рядка, тому що не зможе знайти змінну з ім’ям farvision. Для цього треба виконати:

$ TV={$far} vision

$ echo $TV

television

$_

Соседние файлы в папке Додаткова інформація