#!/bin/bash
# 任务文件路径
TASK_FILE="tasks.txt"
# 初始化任务文件
init_task_file() {
if [ ! -f "$TASK_FILE" ]; then
touch "$TASK_FILE"
fi
}
# 添加任务
add_task() {
local task="$1"
if [ -z "$task" ]; then
echo "错误:任务内容不能为空。"
return 1
fi
echo "[ ] $task" >> "$TASK_FILE"
echo "任务已添加:$task"
}
# 查看任务列表
list_tasks() {
if [ ! -s "$TASK_FILE" ]; then
echo "没有任务。"
return
fi
echo "任务列表:"
cat -n "$TASK_FILE"
}
# 标记任务为完成
mark_task_done() {
local task_num="$1"
if [ -z "$task_num" ]; then
echo "错误:任务编号不能为空。"
return 1
fi
if ! [[ "$task_num" =~ ^[0-9]+$ ]]; then
echo "错误:任务编号必须是数字。"
return 1
fi
local total_tasks=$(wc -l < "$TASK_FILE")
if [ "$task_num" -lt 1 ] || [ "$task_num" -gt "$total_tasks" ]; then
echo "错误:任务编号超出范围。"
return 1
fi
sed -i "${task_num}s/^\[ \]/[X]/" "$TASK_FILE"
echo "任务 $task_num 已标记为完成。"
}
# 删除任务
delete_task() {
local task_num="$1"
if [ -z "$task_num" ]; then
echo "错误:任务编号不能为空。"
return 1
fi
if ! [[ "$task_num" =~ ^[0-9]+$ ]]; then
echo "错误:任务编号必须是数字。"
return 1
fi
local total_tasks=$(wc -l < "$TASK_FILE")
if [ "$task_num" -lt 1 ] || [ "$task_num" -gt "$total_tasks" ]; then
echo "错误:任务编号超出范围。"
return 1
fi
sed -i "${task_num}d" "$TASK_FILE"
echo "任务 $task_num 已删除。"
}
# 主菜单
main_menu() {
while true; do
echo "-----------------------------"
echo "1. 添加任务"
echo "2. 查看任务列表"
echo "3. 标记任务为完成"
echo "4. 删除任务"
echo "5. 退出"
echo "-----------------------------"
read -p "请选择操作 (1-5): " choice
case $choice in
1)
read -p "请输入任务内容: " task
add_task "$task"
;;
2)
list_tasks
;;
3)
read -p "请输入要标记为完成的任务编号: " task_num
mark_task_done "$task_num"
;;
4)
read -p "请输入要删除的任务编号: " task_num
delete_task "$task_num"
;;
5)
echo "退出任务管理系统。"
break
;;
*)
echo "无效的选择,请重新输入。"
;;
esac
done
}
# 初始化任务文件
init_task_file
# 启动主菜单
main_menu