如何让Bash脚本的while循环输入无效值时仍继续提示输入?
Bash 脚本修改实现方案
核心修改逻辑:原脚本的无效输入分支直接执行exit退出,且无效输入判断逻辑错误,同时输入非true/false值会导致循环条件while $var不成立直接退出,只需调整无效输入的处理逻辑即可实现需求。
修改后的完整脚本如下:
#!/bin/bash var="true" i=1 while $var do read -p "Enter value (true/false): " var if [[ $var == "true" ]] then echo "Iteration : $i" ((i++)) elif [[ $var == "false" ]] then echo "Exiting the process" else echo "Invalid Choice." echo "Available Choices are true or false" # 重置var为true,保证循环继续执行 var="true" fi done
关键修改点:
- 替换了原逻辑中错误的
[[ $? -eq 1 ]]无效输入判断,改用else分支直接捕获所有非true/false的输入,逻辑更清晰准确 - 移除了无效输入分支中的
exit退出命令,避免输入无效值直接结束脚本 - 无效输入分支新增
var="true"赋值,避免无效值赋值给var后导致while $var循环条件不成立退出 - 修正了原脚本中拼写错误的
Avaialable为正确的Available
内容的提问来源于stack exchange,提问作者auto_learn
相关产品推荐
相关产品推荐

