В дополнение к скрипту BASH: скрипт проверки свободного места — его другая версия.
Задача — перед выполнением какой-то задачи (в примере это просто вывести фразу «Doing something…«) в скрипте echo.sh — сначала выполнить проверку места, после чего решать — продолжать выполнение
или прервать.
Содержимое echo.sh:
#!/bin/bash # выдаём запрос Y/n на выполнение скрипта проверки места read -r -p "Do you want run check_space script first? [Y/n] " response # читаем полученный ответ case $response in # если Y, y, Yes - запускаем скрипт check_space.sh [yY][eE][sS]|[yY]) ./check_space.sh ;; # если любое другое значение - просто продолжаем выполнение echo.sh *) echo "Let's start..." ;; esac # получаем код выхода скрипта check_space.sh result=$? echo $result # если ответ не 0 - прерываем выполнение if [ $result != 0 ] then echo "Exiting" exit else # если получили 0 - продолжаем выполнение echo "Proceeding" fi echo "Doing something..."
Содержимое check_space.sh:
#!/bin/bash
# задаём переменную, в которой хранится имеющееся свободное место
FREE=`df -h $HOME | grep dev | awk '{print $4}' | sed '{s/.$//;}'`
# задаём минимально допустимое место, если меньше - будет Alert
MIN=500
echo "We have $FREE gigabytes free space in $HOME"
if [ $FREE -lt $MIN ]
then
echo $FREE
echo "Huston, we have a problem!"
# на тестовой машине bash v4 - сначала писалось на ней, можно использовать
#### For bash 4*
#read -r -p "Are you sure to proceed releasing APP? [Y/n] " response
#if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]]
#then
# echo "Let's do it!"
#else
# echo "Exiting setup"
# exit 1
#fi
# а на prodaction-машине оказался bash 3.1 - пришлось делать иначе
#### For bash v3.1
# если свободно места меньше, чем должно быть - запрашиваем подтверждение выполнения echo.sh
read -r -p "Are you sure to proceed? [Y/n] " response
# читаем полученный ответ
case $response in
[yY][eE][sS]|[yY])
echo "Let's do it!"
;;
*)
echo "Exiting setup"
exit 1
;;
esac
# если с местом всё в порядке - ничего не спрашивем, выдаём код 0 и продолжаем выполнение echo.sh
else
echo "Good!"
fi
Примеры работы:
$ ./echo.sh Do you want run check_space script first? [Y/n] y // Запрашиваем подтверждение запуска скрипта проверки места; We have 172 gigabytes free space in /home/setevoy 172 Huston, we have a problem! Are you sure to proceed? [Y/n] y // запрашиваем подтверждение процесса выполнения echo.sh, т.к. проверка места выдала сообщение о проблеме; Let's do it! 0 Proceeding Doing something...
$ ./echo.sh Do you want run check_space script first? [Y/n] y // Подтверждаем запуск скрипта проверки места; We have 172 gigabytes free space in /home/setevoy 172 Huston, we have a problem! Are you sure to proceed releasing APP? [Y/n] n // отказываемся выполнять дальше echo.sh Exiting setup 1 Exiting
$ ./echo.sh Do you want run check_space script first? [Y/n] n // отказываемся запускать проверку места, продолжаем выполнение echo.sh; Let's start... 0 Proceeding Doing something...