Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Создание макросов




Цикли

Простим циклом є цикл перебору for.

for <ЕЛЕМЕНТ> in $<СПИСОК>

do

<дія>

done

 

Циклу передається змінна із списком параметрів, розділених пробілом, знаком переходу рядка або табуляції. Далі цикл виконує дії для кожного елементу із списку, наприклад:

#!/bin/bash

echo "Пошук каталогів в $HOME"

echo

#перейдемо в домашній каталог

pushd $HOME

#отримаємо список файлів

LIST = `ls -a $HOME`

#організовуємо цикл для кожного з

#значень в змінній LIST

for ITEM in $LIST

do

#якщо входження – каталог, виведемо його на екран

if [ -d $ITEM ]; then

echo "$ITEM"

fi

done

#повернемося в колишню директорію

popd

#вихід

exit

 

Проте цикл перебору підходить не у всіх випадках. У багатьох випадках нам необхідний цикл з умовою. Це цикл while.

while <умова>

do

<дії>

done

 

Цикл while виконується до тих пір, поки правильна <умова>. Розглянемо приклад організації циклу з лічильником. Для обчислення будемо використовувати команду expr, що дозволяє виконувати математичні операції із змінними bash:

#!/bin/bash

#визначаємо наявність першого параметра

#командного рядка

if [ -z $1 ]; then

echo "Використання: $0 кількість_перевірок"

exit

fi

#очистимо екран

clear

#визначимо змінну лічильника циклу

COUNTER=0

#організовуємо цикл на $1 ітерацій

while [ $COUNTER -lt $1 ]

do

echo "Завантаження системи (за $1 секунд)"

echo echo "секунда $COUNTER"

echo "-- завантаження системи --"

#команда визначення середнього завантаження

/usr/bin/uptime

echo "-- місце на дисках --"

#визначення вільного місця на диску

df -h

echo "----------------"

echo

#пауза 1 секунду

/bin/sleep 1

#очистимо екран

clear

#приріст змінної циклу

COUNTER=`expr $COUNTER + 1`

done

#вихід

exit

Організація виведення імені програми не дуже вдало виконана в даному випадку, тому що буде виводиться не лише ім'я запущеної програми, а і шлях, набраний в командному рядку. Виправити це допоможе директива basename, що виділяє з шляху ім'я файлу. От як виглядатиме фрагмент наведеного вище сценарію з її використанням:

#!/bin/bash

#визначаємо наявність першого параметра

#командного рядка

if [ -z $1 ]; then

echo Використання: `basename $0` кількість_перевірок

exit

fi

...

Висновки

В командних оболонках Linux є набори команд, за допомогою яких можна писати власні сценарії для автоматизації часто виконуваних операцій. Мова bash містить всі необхідні команди для написання сценаріїв. Крім цього в сценарії можна використовувати команди самої ОС.

 

Контрольні запитання і завдання для самостійного виконання

1. Як вказати оболонку для обробки сценарію?

2. Як оголошуються змінні в bash?

3. Як вивести на консоль значення змінної?

4. Як передати у сценарій параметри з командного рядка?

5. Як перевірити значення, що повертається у змінній?

6. Як перевірити, чи порожній рядок?

7. Як перевірити чи рівні два числа?

8. Як перевірити чи є вказаний файл звичайним файлом?

9. Як перевірити чи є вказаний файл виконуваним (exe-файлом)?

10. У чому різниця між циклами перебору і while?

 

 

1. Выбрать команду Разработчик (Вид)/Макросы…

2. Указать имя макроса "Расценки", нажать Enter (создать).

3. Набрать текст программы. Программа формирует столбец "Цена изделия" листа "Табель".


Sub Расценки()

'

' Расценки Макрос

'

i = 4 //установка начального номера строки

Worksheets("Табель").Activate

While Cells(i, 1) <> "" //№ п/п отличен от пустого

kodf = Cells(i, 3) // чтение кода изделия факультета

Worksheets("Расценки").Activate

k = 4

While Cells(k, 1) <> "" // поиск расценок для факультета

If Cells(k, 2) = kodf Then stf = Cells(k, 3)

k = k + 1




Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 275; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.