Есть скрипт:
a=1
b=2
c=a+b
d=$a+$b
e=$(($a+$b))
Какие значения переменным c,d,e будут присвоены? Почему?
Переменная | Значение | Обоснование |
---|---|---|
c |
a+b | Обращение к переменным a, b не происходит. В данном случае в c записывается только последовательность символов. |
d |
1+2 | Тип переменных явно не определен. Происходит обращение к переменным, но не попытка перевода в целочисленные значения с последующим вычислением суммы. |
e |
3 | Происходит вычисление суммы значений переменных и соответственно попытка преобразования к целочисленным значениям. |
На нашем локальном сервере упал сервис и мы написали скрипт, который постоянно проверяет его доступность, записывая дату проверок до тех пор, пока сервис не станет доступным. В скрипте допущена ошибка, из-за которой выполнение не может завершиться, при этом место на Жёстком Диске постоянно уменьшается. Что необходимо сделать, чтобы его исправить:
# Максимальный размер файла curl.log при привышении которого файл перезаписывается
maxsizefile=100000
while ((1==1))
do
curl https://localhost:4757 > /dev/null 2>&1
if (($? != 0))
then
if [ $(wc -c < curl.log) -gt $maxsizefile ]
then
echo "file was rewrite" > curl.log
fi
date >> curl.log
else
echo "service is up" $(date) >> curl.log
# если команда curl выполнена с кодом 0, то выходим из цикла, сервис доступен
break
fi
done
Необходимо написать скрипт, который проверяет доступность трёх IP: 192.168.0.1
, 173.194.222.113
, 87.250.250.242
по 80
порту и записывает результат в файл log
. Проверять доступность необходимо пять раз для каждого узла.
echo -n > log
array_ip=(192.168.0.1 173.194.222.113 87.250.250.242)
for ip in "${array_ip[@]}"
do
for ((i=1;i<=5;i++))
do
nc -z $ip 80
if (($? != 0))
then
echo $ip "unavailable" >> log
else
echo $ip "available" >> log
fi
done
done
Необходимо дописать скрипт из предыдущего задания так, чтобы он выполнялся до тех пор, пока один из узлов не окажется недоступным. Если любой из узлов недоступен - IP этого узла пишется в файл error, скрипт прерывается.
# Если правильно понял, то писать в log нет необходимости, требуется записать в error и прервать выпонение скрипта.
array_ip=(192.168.0.1 173.194.222.113 87.250.250.242)
while ((1==1))
do
for ip in "${array_ip[@]}"
do
nc -z $ip 80
if (($? != 0))
then
echo $ip > error
exit 0
fi
done
done
Мы хотим, чтобы у нас были красивые сообщения для коммитов в репозиторий. Для этого нужно написать локальный хук для git, который будет проверять, что сообщение в коммите содержит код текущего задания в квадратных скобках и количество символов в сообщении не превышает 30. Пример сообщения: [04-script-01-bash] сломал хук.
#!/usr/bin/env bash
regexp1="^\[[0-9]+-.*-[0-9]+.*\].*$"
regexp2="^.{10,29}$"
v=$(cat $1)
if [[ "$v" =~ $regexp1 ]] && [[ "$v" =~ $regexp2 ]]
then
exit 0
else
echo >&2 Message does not match pattern
exit 1
fi