linux - 如果 read var 为空,则返回以在 bash 中再次提问

标签 linux bash ubuntu scripting ubuntu-18.04

我是 bash 脚本的新手,我正在尝试制作询问“数据库名称”的脚本,如果数据库名称为空,他会再次询问,直到用户写一些东西。
我的代码是:

echo "Enter DB name"
read dbname
db_name="$dbname"
if [ -z $db_name ]
then
        echo "DB Name can't be empty"
else
        mysql -u root -p$mroot_pass -e "CREATE DATABASE IF NOT EXISTS $db_name;"
        echo "DB Name set to $db_name"
fi

有什么建议么?我试图在网上找到一些答案,但没有找到解决方案
谢谢。

最佳答案

您可以使用 while 循环进行循环,直到用户提供有效输入。

所以像:

while [ -z $db_name ]; do
    echo "Enter DB name"
    read db_name
done

# Do cool thing with $db_name

如果您想告诉用户他们的输入无效,您可以将验证移到循环中。
while true; do
    echo "Enter DB name"
    read db_name
    if [ -z $db_name ]; then
       echo "DB name can't be empty"
       continue # Go to the top of the loop
    fi

    break # Valid input given so exit the loop.
done
# Do cool thing with $db_name

请注意,使用 continue 和 break 减少了代码缩进。

(顺便说一句,您混合了 dbname 和 db_name 变量名)

关于linux - 如果 read var 为空,则返回以在 bash 中再次提问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62280490/

相关文章:

ubuntu - 无法在 Ubuntu 16.04 上安装 Swift 4

python - 谷歌应用程序引擎开发应用程序服务器不允许更改数据存储文件路径

linux - NFS 源代码

在 Windows 中推送 Linux 风格

linux - 如何将自定义身份验证插入 Linux?

bash - gnu并行中的两对双引号冲突

Bash 使用分隔符 ", "拆分字符串并在字符串中保留空格

python - OpenCV检测摄像头但不返回图像提要,而guvcview却

c++ - Linux 上的 pthread_self

linux - [[ bash 条件表达式中的语法错误