Mac终端中select菜单无法响应输入且无法退出的问题排查
问题分析与解决
你的脚本存在两个关键问题,导致菜单无法响应输入:
1. case语句未正确引用变量
原代码中case opt in没有使用$引用变量opt,导致case无法匹配输入的选项——即使select正常工作,也不会执行对应分支或退出循环。
2. 使用POSIX sh运行脚本
Mac上的sh是遵循POSIX标准的shell,不支持select这个bash/zsh扩展命令,用sh运行时select无法正常处理输入交互。
修复后的脚本
#!/bin/bash options=( "olá" "adeus" ) echo "escolha uma opção" select opt in "${options[@]}" do case $opt in "olá") echo "Olá de volta!" break ;; "adeus") echo "Mal criado chunga!" break ;; *) echo "Opção inválida, escolha 1 ou 2" ;; esac done
运行方式
- 给脚本添加执行权限:
chmod +x teste2.sh
- 直接运行脚本(会使用shebang指定的bash执行):
./teste2.sh
或者不修改shebang,直接用bash运行:
bash teste2.sh
你也可以把脚本开头的shebang改成#!/bin/zsh,用Mac默认的zsh运行,效果一致。
内容的提问来源于stack exchange,提问作者Luís Cunha
相关产品推荐
相关产品推荐

