АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Приклади скриптів

Читайте также:
  1. IV. Запишіть 2 приклади: один - пособництва зґвалтуванню, другий - готування до розбещення неповнолітніх (складіть фабули).
  2. V. Запишіть 2 приклади вчинення замаху на злочини, передбачені статтями розділу ІІІ Особливої частини КК України (складіть фабули).
  3. Наведемо приклади несприятливих навчальних ситуацій, у яких виникають труднощі в учнів з інертною нервовою системою.
  4. ПРИКЛАДИ ВСТАНОВЛЕННЯ ПЗІП
  5. Приклади застосування типових порушень в процесі
  6. ПРИКЛАДИ КОНТРОЛЬНИХ ЗАПИТАНЬ ДО МОДУЛЬНОГО КОНТРОЛЮ.
  7. ПРИКЛАДИ ОФОРМЛЕННЯ БІБЛІОГРАФІЧНОГО ОПИСУ У СПИСКУ ДЖЕРЕЛ, ЯКИЙ НАВОДЯТЬ У РОБОТІ
  8. Приклади оцінок
  9. Приклади розв’язання задач
  10. Приклади розв’язання задач
  11. Приклади розв’язання задач
  12. Приклади розв’язання задач

Розглянемо простий інтерактивний скрипт whoareyou. Нижче наводиться його текст:

echo What is your name? (1)

read reply (2)

case $reply in (3)

root) (4)

echo You are system administrator of $HOSTNAME (5)

;; (6)

stud) (7)

echo You are a student (8)

;; (9)

*) (10)

echo You are a mortal user on $HOSTNAME (11)

;; (12)

esac (13)

Скрипт пропонує користувачеві відрекомендуватися (рядок 1). Користувач вводить своє ім'я, яке заноситься в змінну reply. Далі відбувається розгалуження в залежності від значення reply (іншими словами, в залежності від відповіді користувача). Скрипт друкує одне з трьох повідомлень. При друку використовується значення іншої змінної - HOSTNAME. Вона визначається безпосередньо системою і містить мережеве ім'я UNIX-машини, на котрій виконується скрипт.

Розглянемо інший приклад. Іноді, при великій кількості файлів, буває важко за ними услідити. Наведена нижче програма chkown дозволяє знаходити файли, які не належать користувачеві.

for filename in `ls` (1)

do (2)

if [! -O $filename ]; then (3)

echo $filename does not belong to `whoami` (4)

fi (5)

 

if [ -d $filename -a -x $filename ]; then (6)

echo Entering $filename... (7)

cd $filename (8)

$0 (9)

Echo Leaving $filename... (10)

cd.. (11)

fi (12)

done (13)

Розглянемо дію скрипта порядково.

В першому рядку ініціалізується for-цикл. Змінною циклу є filename. Список значень визначається результатом роботи команди ls (вона поміщена в зворотні лапки). Іншими словами, змінна filename по черзі приймає значення імен файлів і каталогів поточної директорії.

В рядку 3 відбувається перевірка, чи належить файл або каталог користувачеві, який запустив скрипт (операція -O команди test). Зауважимо, що якщо ключове слово then стоїть на тому ж рядку, що і умова, воно повинно відокремлюватися крапкою з комою (;). Якщо користувач не є хазяїном файлу (знак оклику - логічне заперечення), то друкується повідомлення (рядок 4). При виконанні рядка 4 замість `whoami` в команду echo підставляється ім'я користувача (зворотні лапки).

В рядку 6 відбувається подвійна перевірка: чи є значення змінної filename каталогом (операція -d), і чи є значення змінної filename файлом, виконавчим для користувача (-x). Обидва логічних результата перемножуються (операція -a відповідає логічному "І") і, згідно кінцевому результату, гілка then виконується або не виконується. Як відомо, права на виконання каталогу визначають можливість користувача увійти в нього (cd).

Якщо змінна filename дійсно містить ім'я доступного каталогу, скрипт входить в нього (рядок 8) і рекурсивно запускає самого себе уже в цьому каталозі (в рядку 9 змінна $0 відповідає імені виконавчої програми, тобто імені скрипта). Після завершення роботи цього другого скрипта, керування повертається в первинний процес, відбувається перехід в початковий каталог (рядок 11), і на цьому гілка then завершується.

Необхідно відзначити, що якщо шлях до даного скрипта не буде визначено в змінній PATH, то його виконання буде перерване вже на другому рівні, оскільки програма вже покине початковий каталог (каталог першого рівня), в якому знаходиться файл chkown. Команда в рядку 9 не містить абсолютного імені файлу, тому скрипт звернеться до змінної PATH і почне його пошук у всіх визначених там каталогах.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.002 сек.)