|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Приклади скриптівРозглянемо простий інтерактивний скрипт 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 і почне його пошук у всіх визначених там каталогах. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.002 сек.) |