Есть скрипт:
a=1
b=2
c=a+b
d=$a+$b
e=$(($a+$b))Какие значения переменным c,d,e будут присвоены? Почему?
| Переменная | Значение | Обоснование |
|---|---|---|
a |
1 | переменная |
b |
2 | переменная |
c |
a+b | a+b в нашем случае обычная строка, где "a" "+" "b" символы |
d |
1+2 | аналогично переменной c, за исключением того, что a и b переменные |
e |
3 | результат операции с целым числом |
На нашем локальном сервере упал сервис и мы написали скрипт, который постоянно проверяет его доступность, записывая дату проверок до тех пор, пока сервис не станет доступным (после чего скрипт должен завершиться). В скрипте допущена ошибка, из-за которой выполнение не может завершиться, при этом место на Жёстком Диске постоянно уменьшается. Что необходимо сделать, чтобы его исправить:
while ((1==1)
do
curl https://localhost:4757
if (($? != 0))
then
date >> curl.log
fi
doneСкрипт исправлен до следуюшего вида:
#!/usr/bin/env bash
while ((1 == 1))
do
curl https://ngs.ru
if (($? == 0))
then
echo $(date) >> curl.log
break
fi
doneНеобходимо написать скрипт, который проверяет доступность трёх IP: 192.168.0.1, 173.194.222.113, 87.250.250.242 по 80 порту и записывает результат в файл log. Проверять доступность необходимо пять раз для каждого узла.
#!/usr/bin/env bash
IP=(192.168.0.1 173.194.222.113 87.250.250.242)
for (( i = 1; i <= 5; i++ ))
do
for item in ${IP[*]}
do
curl --connect-timeout 5 $item:80 2>/dev/null 1>/dev/null
if (($? == 0))
then
echo $(date)" $item:80 is UP" >> curl.log
else
echo $(date)" $item:80 is DOWN" >> curl.log
fi
done
sleep 60
doneНеобходимо дописать скрипт из предыдущего задания так, чтобы он выполнялся до тех пор, пока один из узлов не окажется недоступным. Если любой из узлов недоступен - IP этого узла пишется в файл error, скрипт прерывается.
#!/usr/bin/env bash
IP=(173.194.222.113 87.250.250.242)
while ((1 == 1))
do
for item in ${IP[*]}
do
curl --connect-timeout 5 $item:80 2>/dev/null 1>/dev/null
if (($? == 0))
then
echo $(date)" $item:80 is UP" >> curl.log
else
echo $(date)" $item:80 is DOWN" >> error.log
exit 0
fi
done
sleep 5
doneМы хотим, чтобы у нас были красивые сообщения для коммитов в репозиторий. Для этого нужно написать локальный хук для git, который будет проверять, что сообщение в коммите содержит код текущего задания в квадратных скобках и количество символов в сообщении не превышает 30. Пример сообщения: [04-script-01-bash] сломал хук.
#!/usr/bin/env bash
#msg=`cat $1`
#msg=$(cat $1)
msg=$(< $1)
#length=$(echo $msg | wc -m)
length=${#msg}
regexp="^\[[0-9]{1,3}-[A-Za-z0-9_]{1,25}-[0-9]{1,3}-[A-Za-z0-9_]{1,25}]\s"
if (( $length > 30 ))
then
echo "ERROR Message is too long"
exit 1
fi
echo $msg | grep -q -E $regexp
if (($? != 0))
then
echo "ERROR Message format mismatch"
exit 1
fi
Скрипт необходимо прописать в следующем файле: $ vim .git/hooks/commit-msg