20_1_bash

12
Блок 20 – 1/1 Основы скриптов bash This work is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

Upload: vadim12345

Post on 08-Jul-2016

215 views

Category:

Documents


0 download

DESCRIPTION

123456

TRANSCRIPT

Page 1: 20_1_bash

Блок 20 – 1/1

Основы скриптов bashThis work is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/ or send a

letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

Page 2: 20_1_bash

15.07.07 (c) 2007, Андрей Маркелов 2

Введение

● Назначение и создание скриптов● Взаимодействие с пользователем● Специальные переменные● Условное выполнение● Циклы● Отладка скриптов

Page 3: 20_1_bash

15.07.07 (c) 2007, Андрей Маркелов 3

Назначение и создание скриптов

● Назначение● Автоматизация часто встречающихся задач● Обработка текстов● Небольшие приложения и прототипы приложений● Многое другое...

● Создание скрипта● Любой текстовый редактор● #!/bin/bash● #!/bin/sh● #!/ / /путь к интерпретатору● chmod u+x myscript

Page 4: 20_1_bash

15.07.07 (c) 2007, Андрей Маркелов 4

Специальные переменные

● Статус завершения ● $?● exit число● 0 – успешно● 1-255 - ошибка

● Параметры командной строки● $* - все параметры● $1, $2, $3, $4, ... - параметры● $0 – исполняемый файл● $# - число параметров

Page 5: 20_1_bash

15.07.07 (c) 2007, Андрей Маркелов 5

Взаимодействие с пользователем

● read -p ''Введите число '' MYNUM● echo '' Ваше число '' $MYNUM● printf '' Ваше число %0.3f\n'' $MYNUM

● Синтаксис аналогичен функции printf()

Page 6: 20_1_bash

15.07.07 (c) 2007, Андрей Маркелов 6

Условное выполнение (1)

● || команда команда● tar cvf back.tar /data || echo ошибка

| mail rootархивации● && команда команда

● grep andrey /etc/passwd > /dev/null && echo andreyЕсть пользователь

Page 7: 20_1_bash

15.07.07 (c) 2007, Андрей Маркелов 7

Условное выполнение - test

● test ''$X'' = ''$Y'' && echo ''Ok!''

● [ ''$X'' = ''$Y'' ] && echo ''Ok!''

● if [ -f /home/andrey/test ]; then

echo ''Ok!''

fi

● Проверки● -f; -d; -x; -O;● -z; -n; =; !=; <; >; -a; -o● другие...

Page 8: 20_1_bash

15.07.07 (c) 2007, Андрей Маркелов 8

Условное выполнение (2)

If условие

then

команды

elif

команды

else

команды

fi

Page 9: 20_1_bash

15.07.07 (c) 2007, Андрей Маркелов 9

Цикл for

● for MYVAR in f1 f2 f3

do

echo $MYVAR

done

● for i in {1..100}

do

host=192.168.0.$i; ping $host

done

Page 10: 20_1_bash

15.07.07 (c) 2007, Андрей Маркелов 10

Цикл while

while условие

do

команда

done

● continue● break

Page 11: 20_1_bash

15.07.07 (c) 2007, Андрей Маркелов 11

Отладка скриптов

● bash -x myscript

Page 12: 20_1_bash

15.07.07 (c) 2007, Андрей Маркелов 12

ПРАКТИЧЕСКАЯ РАБОТА

Написание скриптов bash