You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Домашнее задание к занятию "4.1. Командная оболочка Bash: Практические навыки"
Обязательные задания
1. Есть скрипт:
a=1
b=2
c=a+b
d=$a+$b
e=$(($a+$b))
* Какие значения переменным c,d,e будут присвоены?
* Почему?
c=a+b вернет a+b, т.к. a и b без символа $, + воспринимается как оператор только в арифметических операциях;
% echo$c
a+b
d=$a+$b вернет 1+2, т.к. a и b с символом $ будут восприниматься как обращения к переменным
% echo$d
1+2
e=$(($a+$b)) вернет 3, т.к. конструкция ((..)) служит для арифметических операций
% echo$e
3
2. На нашем локальном сервере упал сервис и мы написали скрипт, который постоянно проверяет его доступность, записывая дату проверок до тех пор, пока сервис не станет доступным. В скрипте допущена ошибка, из-за которой выполнение не может завершиться, при этом место на Жёстком Диске постоянно уменьшается. Что необходимо сделать, чтобы его исправить:
while((1==1) do curl https://localhost:4757 if (($? != 0))then
date >> curl.log
fidone
while((1==1))#отсутствовала закрывающаяся круглая скобкаdo
curl https://localhost:4757
if(($?!=0))then
date >> curl.log
else#<< условие выхода при поднятии сервисаbreak#<<fidone
3. Необходимо написать скрипт, который проверяет доступность трёх IP: 192.168.0.1, 173.194.222.113, 87.250.250.242 по 80 порту и записывает результат в файл log. Проверять доступность необходимо пять раз для каждого узла.
4. Необходимо дописать скрипт из предыдущего задания так, чтобы он выполнялся до тех пор, пока один из узлов не окажется недоступным. Если любой из узлов недоступен - IP этого узла пишется в файл error, скрипт прерывается
*Дополнительное задание (со звездочкой) - необязательно к выполнению
Мы хотим, чтобы у нас были красивые сообщения для коммитов в репозиторий. Для этого нужно написать локальный хук для git, который будет проверять, что сообщение в коммите содержит код текущего задания в квадратных скобках и количество символов в сообщении не превышает 30. Пример сообщения: [04-script-01-bash] сломал хук.
% nano .git/hooks/commit-msg
#!/usr/bin/env bash
validator=$(grep -c "\[[[:digit:]]*-[[:alpha:]]*-[[:digit:]]*-[[:alpha:]]*\] *""$1")
count=$(cat "$1"| wc -m )if [[ "$validator"-eq"0" ]];thenecho"Commit message does not match format: [number-section-number-lecture] message"echoecho"Commit message:"
cat $1| grep -v ^#echoexit 1
elif [[ "$count"-gt"30" ]];thenecho"The commit message must not exceed 30 characters. It turned out $count characters"echoecho :"Commit message:"
cat $1| grep -v ^#echoexit 1
fiexit 0