BASH脚本菜单执行操作后echo输出不显示问题求助
问题原因与解决方案
嗨,我来帮你搞清楚为什么你的echo内容看不到~
问题根源
你的脚本里while true循环的第一行就是clear命令——当你完成减法、除法这些操作后,脚本会立刻回到循环开头,执行clear把刚才的输出给清空了,所以你根本来不及看到echo的内容。而加exit的话,脚本直接终止,不会走回循环的clear步骤,所以输出能正常显示。
解决办法
我们只需要在每个有输出的case分支后面加一个暂停操作,让你看完输出后,手动触发回到菜单的步骤就行。最常用的是用read -p命令,提示用户按回车继续。
修改后的脚本如下:
#!/bin/bash while true; do clear cat <<EOF Please Select: Option 1. Quit Option 2. Display Options Again Option 3. Subtraction Option 4. Division Option 5. Who am I? EOF read -p "Enter selection [1-5] > " case "$REPLY" in 1) break ;; 2) ;; 3) read -p "Enter the First Number: " a read -p "Enter the Second Number: " b echo "$a - $b = $(($a-$b))" read -p "Press Enter to return to menu..." ;; # 新增暂停 4) printf "Enter the First Number: " read a printf "Enter the Second Number: " read b echo "$a / $b = $(($a/$b))" read -p "Press Enter to return to menu..." ;; # 新增暂停 5) echo "My name is Michelle" read -p "Press Enter to return to menu..." ;; # 新增暂停 *) echo "Invalid entry." read -p "Press Enter to return to menu..." ;; # 新增暂停 esac done echo "Program terminated."
额外小提示
- 如果你觉得每次按回车麻烦,也可以用
sleep 3代替read,让脚本自动等待3秒后回到菜单,但read的交互体验会更好。 - 注意除法操作里如果
b是0的话会报错,你可以后续加个判断避免这种情况,但这是另一个小问题啦~
内容的提问来源于stack exchange,提问作者Alchino
相关产品推荐
相关产品推荐

