Операторусловия if У нас получился классный сценарий резервного копирования, но что если в процессе выполнения произойдет какая-то ошибка? Тогда скрипт не сработает, а мы об этом даже не узнаем. Чтобы такого не случилось, напишем в сценарии сообщения об ошибках. Так мы поймем, что именно пошло не так. Для этого нам понадобится оператор условия if.
1. user@bash: cat projectbackup.sh 2. #!/bin/bash
3. # Создает резервную копию проекта
4. # karpaff 22/1/2022
5.
6. if [ $# != 1 ]
7. then
8. echo 'Должен быть указан 1 аргумент — папка, для которой нужно провести резервное копирование'
9. exit
10. fi
11. if [ ! -d ~/projects/$1 ]
12. then
13. echo 'Переданная папка не существует'
14. exit
15. fi
16. date=`date +%F`
17.
18. # Мы уже создали папку резервного копирования для сегодняшней даты?
19. if [ -d ~/projectbackups/$1_$date ]
20. then
21. echo 'Для этого проекта уже создана резервная копия, перезаписать?'
22. read answer
23. if [ $answer != 'y' ]
24. then
25. exit
26. fi
27. else
28. mkdir ~/projectbackups/$1_$date
29. fi
30. cp -R ~/projects/$1 ~/projectbackups/$1_$date
31. echo Резервное копирование папки $1 завершено
32. user@bash: Давайте разберемся, что здесь происходит:
Строка 6. Открываем условную конструкцию с помощью оператора if. Форматирование здесь очень важно: обратите внимание, где находятся пробелы, они необходимы для правильной работы. В этом выражении мы спрашиваем, не равно ли != количество аргументов $# единице.
Строка 8. Если нет, скрипт был вызван неправильно. Выводим сообщение, объясняющее, как следует использовать наш сценарий.
Строка 9. Поскольку скрипт не был вызван должным образом, нужно выйти из скрипта, прежде чем продолжить работу.