Есть скрипт:
a=1
b=2
c=a+b
d=$a+$b
e=$(($a+$b))
Какие значения переменным c,d,e будут присвоены? Почему?
Переменная | Значение | Обоснование |
---|---|---|
c |
a+b | bash по умолчанию все воспринимает как строки, для него это строка, нет образения к переменным, нет $ |
d |
1+2 | Подставились значения переменных a и b, но арифметическая операция делается иначе, следовательно для него это тоже строка |
e |
3 | Это синтаксис для арифметических операций, можно также заменить на $[$a+$b] |
На нашем локальном сервере упал сервис и мы написали скрипт, который постоянно проверяет его доступность, записывая дату проверок до тех пор, пока сервис не станет доступным (после чего скрипт должен завершиться). В скрипте допущена ошибка, из-за которой выполнение не может завершиться, при этом место на Жёстком Диске постоянно уменьшается. Что необходимо сделать, чтобы его исправить:
while ((1==1)
do
curl https://localhost:4757
if (($? != 0))
then
date >> curl.log
fi
done
Подходов мб 4:
- break внутри цикла
- exit 0 внутри цикла
- изменение условия в while, т.е. подставляем переменную, а из цикла на неё влияем
- думаю есть возможность через сигнал остановить процесс :D
Продемонстрирую первый вариант, думаю он самый подходящий
#!/usr/bin/env bash
while ((1==1))
do
curl http://localhost:81
if (($? != 0))
then
date >> curl.log
else
break
fi
done
Необходимо написать скрипт, который проверяет доступность трёх IP: 192.168.0.1
, 173.194.222.113
, 87.250.250.242
по 80
порту и записывает результат в файл log
. Проверять доступность необходимо пять раз для каждого узла.
#!/usr/bin/env bash
# В будущем легко вынести через передачу параметров
ips=("192.168.0.1" "173.194.222.113" "87.250.250.242")
port=80
attempts=5
for ip in ${ips[@]}
do
echo $ip
attempt=0
while ((attempt < attempts))
do
curl -s $ip:$port >> log
attempt=$[$attempt+1]
echo $attempt
done
done
Необходимо дописать скрипт из предыдущего задания так, чтобы он выполнялся до тех пор, пока один из узлов не окажется недоступным. Если любой из узлов недоступен - IP этого узла пишется в файл error, скрипт прерывается.
#!/usr/bin/env bash
# В будущем легко вынести через передачу параметров
ips=("192.168.0.1" "173.194.222.113" "87.250.250.242")
port=80
attempts=5
while ((1==1))
do
for ip in ${ips[@]}
do
echo $ip
attempt=0
while ((attempt < attempts))
do
curl -s --connect-timeout 2 $ip:$port
if (($? != 0))
then
echo $ip >> error
exit
fi
attempt=$[$attempt+1]
echo $attempt
done
done
done
Мы хотим, чтобы у нас были красивые сообщения для коммитов в репозиторий. Для этого нужно написать локальный хук для git, который будет проверять, что сообщение в коммите содержит код текущего задания в квадратных скобках и количество символов в сообщении не превышает 30. Пример сообщения: [04-script-01-bash] сломал хук.
???