AllInfo
Main: Info Blog Temp Mail


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


3.144.255.198 / 2024-12-23_05-32-42 UTC.