wrk 2024-12-22 21-18-58
$ cat bash-demo.sh #!/bin/bash # Файл для хранения задач TODO_FILE="todo.txt" # Функция для отображения меню show_menu() { echo "=== TODO-лист ===" echo "1) Добавить задачу" echo "2) Показать задачи" echo "3) Удалить задачу" echo "4) Завершить задачу" echo "5) Редактировать задачу" echo "6) Выход" } # Функция для добавления задачи add_task() { read -p "Введите задачу: " task if [[ -n "$task" ]]; then echo "$task" >> "$TODO_FILE" echo "Задача добавлена!" else echo "Ошибка: Задача не может быть пустой." fi } # Функция для отображения задач show_tasks() { if [[ -f "$TODO_FILE" && -s "$TODO_FILE" ]]; then echo "Список задач:" nl "$TODO_FILE" # Нумерация строк else echo "Нет задач." fi } # Функция для удаления задачи delete_task() { show_tasks read -p "Введите номер задачи для удаления: " task_number if [[ "$task_number" =~ ^[0-9]+$ ]]; then sed -i "${task_number}d" "$TODO_FILE" echo "Задача удалена!" else echo "Ошибка: Введите корректный номер задачи." fi } # Функция для завершения задачи complete_task() { show_tasks read -p "Введите номер задачи для завершения: " task_number if [[ "$task_number" =~ ^[0-9]+$ ]]; then task=$(sed -n "${task_number}p" "$TODO_FILE") sed -i "${task_number}d" "$TODO_FILE" echo "[Выполнено] $task" >> completed_tasks.txt echo "Задача завершена и перемещена в файл completed_tasks.txt!" else echo "Ошибка: Введите корректный номер задачи." fi } # Функция для редактирования задачи edit_task() { show_tasks read -p "Введите номер задачи для редактирования: " task_number if [[ "$task_number" =~ ^[0-9]+$ ]]; then current_task=$(sed -n "${task_number}p" "$TODO_FILE") read -p "Введите новый текст для задачи (оставьте пустым, чтобы отменить): " new_task if [[ -n "$new_task" ]]; then sed -i "${task_number}s/.*/$new_task/" "$TODO_FILE" echo "Задача обновлена!" else echo "Редактирование отменено." fi else echo "Ошибка: Введите корректный номер задачи." fi } # Основная программа # Проверка существования файла задач и его создание, если он не существует. if [[ ! -f "$TODO_FILE" ]]; then touch "$TODO_FILE" fi while true; do show_menu read -p "Выберите действие (1-6): " choice case "$choice" in 1) add_task ;; 2) show_tasks ;; 3) delete_task ;; 4) complete_task ;; 5) edit_task # Вызов функции редактирования задач. ;; 6) echo "Выход из программы." exit 0 ;; *) echo "Ошибка: Неверный выбор. Пожалуйста, выберите число от 1 до 6." ;; esac echo "" # Пустая строка для разделения выводов. done