You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本实现非空数据库名称循环输入的方案咨询

解决Bash脚本循环询问数据库名称的问题

嘿,我明白你的需求啦——你想要脚本一直提示用户输入数据库名称,直到用户给出非空的有效输入对吧?你现在的代码只做了一次检查,所以如果用户输入空值,脚本只会报错但不会重新询问,这就是问题所在。

我们可以用while循环来实现这个“重复询问直到输入有效”的逻辑,下面是修改后的完整脚本:

# 循环询问直到输入非空
while true; do
    echo "Enter DB name"
    read dbname
    db_name="$dbname"
    # 给变量加双引号,避免输入含空格时出现语法问题
    if [ -z "$db_name" ]; then
        echo "DB Name can't be empty. Please try again."
    else
        # 执行数据库创建操作,注意密码变量也要加引号
        mysql -u root -p"$mroot_pass" -e "CREATE DATABASE IF NOT EXISTS $db_name;"
        echo "DB Name set to $db_name"
        # 输入有效,退出循环
        break
    fi
done

关键修改点说明:

  • 用while true创建无限循环,直到遇到break才退出流程
  • 把输入提示和读取操作放进循环内,确保输入为空时会重新触发询问
  • 变量引用时加上双引号(比如"$db_name"和"$mroot_pass"):这是Bash脚本的最佳实践,能避免输入包含空格或特殊字符时出现语法错误
  • 当输入有效时,执行完数据库创建操作后用break跳出循环,结束这部分逻辑

另外还有个小优化:你可以把echo和read合并成一行,让代码更简洁:

read -p "Enter DB name: " db_name

修改后的精简版循环如下:

while true; do
    read -p "Enter DB name: " db_name
    if [ -z "$db_name" ]; then
        echo "DB Name can't be empty. Please try again."
    else
        mysql -u root -p"$mroot_pass" -e "CREATE DATABASE IF NOT EXISTS $db_name;"
        echo "DB Name set to $db_name"
        break
    fi
done

这样脚本就能完美实现你想要的功能啦!

内容的提问来源于stack exchange,提问作者Gil Bennun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 22:32:58