bash - 循环代码直到用户输入成功

标签 bash shell scripting

我是 bash 脚本的新手。我写了一段代码,它将根据用户输入的操作系统和软件版本下载软件。我的代码需要再次循环,直到用户提供正确的 os 位数(64 或 32)和正确的软件版本。如果条件满足,它应该执行并继续下一行。

echo 'Enter the OS-Bit'
read osbit
echo 'Enter the Software Version To Install'
read software_version

这是我的完整代码

if [ $osbit == "64" ];then
    os_version="x86_64"
    cd $directoy_path; curl -L -O https://myblog/downloads/software-$software_version-$os_version.rpm

elif [ $osbit == "32" ];then
    os_version="i686"
    cd $directoy_path; curl -L -O https://myblog/downloads/software-$software_version-$os_version.rpm

else
    echo 'Please enter valid os bit #'
fi
rpm -vi $software_version-$os_version.rpm

echo 'Download Completed'
echo Installing $software_version
rpm --install $directoy_path/dfg-$software_version-$os_version.rpm

最佳答案

您可以将条件置于无限循环中, 并在输入正确时跳出它:

echo 'Enter the Software Version To Install'
read software_version

while true; do
    echo 'Enter the OS-Bit'
    read osbit

    if [ "$osbit" == "64" ];then
        os_version="x86_64"
        break
    elif [ "$osbit" == "32" ];then
        os_version="i686"
        break
    else
        echo 'Please enter valid os bit #'
    fi
done

cd "$directoy_path" && curl -L -O "https://myblog/downloads/software-$software_version-$os_version.rpm"

关于bash - 循环代码直到用户输入成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47801295/

相关文章:

bash - 在 Bash 脚本中按格式排序字符串数组

bash - 如何将程序的输出同时定向到控制台和日志文件?

macos - 使用 exit 在预提交 Hook 中停止 git commit

scripting - Deno:如何替换 npm 脚本 (package.json)

java - 如何使用 ScriptEngine 将 Javascript 的输出转换为 Java

scripting - 24小时内最容易学习的脚本语言?

linux - Bash:为什么对这个字符串进行 egrepping 会成功?

shell - 带有 argparse 的 fish 函数的命名参数

bash - 如何正确

带重定向的 shell 内置