20_1_bash
DESCRIPTION
123456TRANSCRIPT
Блок 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.
15.07.07 (c) 2007, Андрей Маркелов 2
Введение
● Назначение и создание скриптов● Взаимодействие с пользователем● Специальные переменные● Условное выполнение● Циклы● Отладка скриптов
15.07.07 (c) 2007, Андрей Маркелов 3
Назначение и создание скриптов
● Назначение● Автоматизация часто встречающихся задач● Обработка текстов● Небольшие приложения и прототипы приложений● Многое другое...
● Создание скрипта● Любой текстовый редактор● #!/bin/bash● #!/bin/sh● #!/ / /путь к интерпретатору● chmod u+x myscript
15.07.07 (c) 2007, Андрей Маркелов 4
Специальные переменные
● Статус завершения ● $?● exit число● 0 – успешно● 1-255 - ошибка
● Параметры командной строки● $* - все параметры● $1, $2, $3, $4, ... - параметры● $0 – исполняемый файл● $# - число параметров
15.07.07 (c) 2007, Андрей Маркелов 5
Взаимодействие с пользователем
● read -p ''Введите число '' MYNUM● echo '' Ваше число '' $MYNUM● printf '' Ваше число %0.3f\n'' $MYNUM
● Синтаксис аналогичен функции printf()
15.07.07 (c) 2007, Андрей Маркелов 6
Условное выполнение (1)
● || команда команда● tar cvf back.tar /data || echo ошибка
| mail rootархивации● && команда команда
● grep andrey /etc/passwd > /dev/null && echo andreyЕсть пользователь
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● другие...
15.07.07 (c) 2007, Андрей Маркелов 8
Условное выполнение (2)
If условие
then
команды
elif
команды
else
команды
fi
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
15.07.07 (c) 2007, Андрей Маркелов 10
Цикл while
while условие
do
команда
done
● continue● break
15.07.07 (c) 2007, Андрей Маркелов 11
Отладка скриптов
● bash -x myscript
15.07.07 (c) 2007, Андрей Маркелов 12
ПРАКТИЧЕСКАЯ РАБОТА
Написание скриптов bash