mirror of
https://github.com/yuaotian/go-cursor-help.git
synced 2025-06-08 12:32:06 +08:00
改进cursor_mac_id_modifier.sh脚本中的用户输入处理,采用更健壮的方式读取用户选择,增强了输入缓冲区清空机制。添加调试日志以便于追踪用户输入,确保脚本在输入问题时不会终止,提升了脚本的稳定性和用户体验。
This commit is contained in:
parent
cf20a2a470
commit
4f8f988518
@ -1048,29 +1048,53 @@ main() {
|
|||||||
echo ""
|
echo ""
|
||||||
printf "请输入选择 [0-1] (默认 1): "
|
printf "请输入选择 [0-1] (默认 1): "
|
||||||
|
|
||||||
# 清空输入缓冲区
|
# 使用更健壮的方式读取用户输入
|
||||||
while read -r -t 0.1; do read -r; done
|
|
||||||
|
|
||||||
# 使用/dev/tty确保直接从终端读取输入
|
|
||||||
app_choice=""
|
app_choice=""
|
||||||
read -r app_choice </dev/tty
|
|
||||||
|
# 尝试通过多种方式清空输入缓冲区
|
||||||
|
# 方法1: 使用read -t
|
||||||
|
while read -r -t 0.1; do read -r; done 2>/dev/null
|
||||||
|
|
||||||
|
# 方法2: 重定向方式
|
||||||
|
exec <&-
|
||||||
|
exec < /dev/tty
|
||||||
|
|
||||||
|
# 尝试使用默认输入和/dev/tty两种方式读取
|
||||||
|
app_choice=$(read -r choice; echo "$choice")
|
||||||
|
if [ -z "$app_choice" ]; then
|
||||||
|
# 如果上面的方法失败,尝试直接使用/dev/tty
|
||||||
|
if [ -e "/dev/tty" ] && [ -r "/dev/tty" ] && [ -w "/dev/tty" ]; then
|
||||||
|
app_choice=$(head -n 1 < /dev/tty 2>/dev/null)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 记录日志以便调试
|
||||||
|
echo "[INPUT_DEBUG] 读取到的选择: '$app_choice'" >> "$LOG_FILE"
|
||||||
|
|
||||||
|
# 确保脚本不会因为输入问题而终止
|
||||||
|
set +e
|
||||||
|
|
||||||
# 处理用户选择
|
# 处理用户选择
|
||||||
case "$app_choice" in
|
if [ "$app_choice" = "0" ]; then
|
||||||
0)
|
|
||||||
log_info "您选择了跳过主程序文件修改"
|
log_info "您选择了跳过主程序文件修改"
|
||||||
log_info "已跳过主程序文件修改"
|
log_info "已跳过主程序文件修改"
|
||||||
;;
|
else
|
||||||
*)
|
# 默认或输入1都执行修改
|
||||||
log_info "您选择了修改主程序文件"
|
log_info "正在执行主程序文件修改..."
|
||||||
|
|
||||||
|
# 使用子shell执行修改,避免错误导致整个脚本退出
|
||||||
|
(
|
||||||
if modify_cursor_app_files; then
|
if modify_cursor_app_files; then
|
||||||
log_info "主程序文件修改成功!"
|
log_info "主程序文件修改成功!"
|
||||||
else
|
else
|
||||||
log_warn "主程序文件修改失败,但配置文件修改可能已成功"
|
log_warn "主程序文件修改失败,但配置文件修改可能已成功"
|
||||||
log_warn "如果重启后 Cursor 仍然提示设备被禁用,请重新运行此脚本"
|
log_warn "如果重启后 Cursor 仍然提示设备被禁用,请重新运行此脚本"
|
||||||
fi
|
fi
|
||||||
;;
|
)
|
||||||
esac
|
fi
|
||||||
|
|
||||||
|
# 恢复错误处理
|
||||||
|
set -e
|
||||||
|
|
||||||
# 添加MAC地址修改选项
|
# 添加MAC地址修改选项
|
||||||
echo
|
echo
|
||||||
@ -1080,27 +1104,49 @@ main() {
|
|||||||
echo ""
|
echo ""
|
||||||
printf "请输入选择 [0-1] (默认 0): "
|
printf "请输入选择 [0-1] (默认 0): "
|
||||||
|
|
||||||
# 清空输入缓冲区
|
# 使用更健壮的方式读取用户输入
|
||||||
while read -r -t 0.1; do read -r; done
|
|
||||||
|
|
||||||
# 使用/dev/tty确保直接从终端读取输入
|
|
||||||
mac_choice=""
|
mac_choice=""
|
||||||
read -r mac_choice </dev/tty
|
|
||||||
|
|
||||||
# 处理用户输入(包括空输入和无效输入)
|
# 尝试通过多种方式清空输入缓冲区
|
||||||
case "$mac_choice" in
|
# 方法1: 使用read -t
|
||||||
1)
|
while read -r -t 0.1; do read -r; done 2>/dev/null
|
||||||
|
|
||||||
|
# 方法2: 重定向方式
|
||||||
|
exec <&-
|
||||||
|
exec < /dev/tty
|
||||||
|
|
||||||
|
# 尝试使用默认输入和/dev/tty两种方式读取
|
||||||
|
mac_choice=$(read -r choice; echo "$choice")
|
||||||
|
if [ -z "$mac_choice" ]; then
|
||||||
|
# 如果上面的方法失败,尝试直接使用/dev/tty
|
||||||
|
if [ -e "/dev/tty" ] && [ -r "/dev/tty" ] && [ -w "/dev/tty" ]; then
|
||||||
|
mac_choice=$(head -n 1 < /dev/tty 2>/dev/null)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 记录日志以便调试
|
||||||
|
echo "[INPUT_DEBUG] MAC地址选择: '$mac_choice'" >> "$LOG_FILE"
|
||||||
|
|
||||||
|
# 确保脚本不会因为输入问题而终止
|
||||||
|
set +e
|
||||||
|
|
||||||
|
# 处理用户选择
|
||||||
|
if [ "$mac_choice" = "1" ]; then
|
||||||
log_info "您选择了修改MAC地址"
|
log_info "您选择了修改MAC地址"
|
||||||
|
# 使用子shell执行修改,避免错误导致整个脚本退出
|
||||||
|
(
|
||||||
if modify_mac_address; then
|
if modify_mac_address; then
|
||||||
log_info "MAC地址修改完成!"
|
log_info "MAC地址修改完成!"
|
||||||
else
|
else
|
||||||
log_error "MAC地址修改失败"
|
log_error "MAC地址修改失败"
|
||||||
fi
|
fi
|
||||||
;;
|
)
|
||||||
*)
|
else
|
||||||
log_info "已跳过MAC地址修改"
|
log_info "已跳过MAC地址修改"
|
||||||
;;
|
fi
|
||||||
esac
|
|
||||||
|
# 恢复错误处理
|
||||||
|
set -e
|
||||||
|
|
||||||
show_file_tree
|
show_file_tree
|
||||||
show_follow_info
|
show_follow_info
|
||||||
@ -1124,18 +1170,37 @@ main() {
|
|||||||
echo ""
|
echo ""
|
||||||
printf "是否需要恢复原始 Cursor? [0-1] (默认 0): "
|
printf "是否需要恢复原始 Cursor? [0-1] (默认 0): "
|
||||||
|
|
||||||
# 清空输入缓冲区
|
# 使用更健壮的方式读取用户输入
|
||||||
while read -r -t 0.1; do read -r; done
|
|
||||||
|
|
||||||
# 使用/dev/tty确保直接从终端读取输入
|
|
||||||
fix_choice=""
|
fix_choice=""
|
||||||
read -r fix_choice </dev/tty
|
|
||||||
|
# 尝试通过多种方式清空输入缓冲区
|
||||||
|
# 方法1: 使用read -t
|
||||||
|
while read -r -t 0.1; do read -r; done 2>/dev/null
|
||||||
|
|
||||||
|
# 方法2: 重定向方式
|
||||||
|
exec <&-
|
||||||
|
exec < /dev/tty
|
||||||
|
|
||||||
|
# 尝试使用默认输入和/dev/tty两种方式读取
|
||||||
|
fix_choice=$(read -r choice; echo "$choice")
|
||||||
|
if [ -z "$fix_choice" ]; then
|
||||||
|
# 如果上面的方法失败,尝试直接使用/dev/tty
|
||||||
|
if [ -e "/dev/tty" ] && [ -r "/dev/tty" ] && [ -w "/dev/tty" ]; then
|
||||||
|
fix_choice=$(head -n 1 < /dev/tty 2>/dev/null)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 记录日志以便调试
|
||||||
|
echo "[INPUT_DEBUG] 修复选项选择: '$fix_choice'" >> "$LOG_FILE"
|
||||||
|
|
||||||
|
# 确保脚本不会因为输入问题而终止
|
||||||
|
set +e
|
||||||
|
|
||||||
# 处理用户选择
|
# 处理用户选择
|
||||||
case "$fix_choice" in
|
if [ "$fix_choice" = "1" ]; then
|
||||||
1)
|
|
||||||
log_info "您选择了修复模式"
|
log_info "您选择了修复模式"
|
||||||
# 清理Cursor应用
|
# 使用子shell执行清理,避免错误导致整个脚本退出
|
||||||
|
(
|
||||||
if clean_cursor_app; then
|
if clean_cursor_app; then
|
||||||
log_info "Cursor 已恢复到原始状态"
|
log_info "Cursor 已恢复到原始状态"
|
||||||
log_info "如果您需要应用ID修改,请重新运行此脚本"
|
log_info "如果您需要应用ID修改,请重新运行此脚本"
|
||||||
@ -1143,11 +1208,13 @@ main() {
|
|||||||
log_warn "未能找到备份,无法自动恢复"
|
log_warn "未能找到备份,无法自动恢复"
|
||||||
log_warn "建议重新安装 Cursor"
|
log_warn "建议重新安装 Cursor"
|
||||||
fi
|
fi
|
||||||
;;
|
)
|
||||||
*)
|
else
|
||||||
log_info "已跳过修复操作"
|
log_info "已跳过修复操作"
|
||||||
;;
|
fi
|
||||||
esac
|
|
||||||
|
# 恢复错误处理
|
||||||
|
set -e
|
||||||
|
|
||||||
# 记录脚本完成信息
|
# 记录脚本完成信息
|
||||||
log_info "脚本执行完成"
|
log_info "脚本执行完成"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user