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