В дополнение к скрипту 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...