【问题标题】:How do I write an error message in BASH for a specific input? [duplicate]如何在 BASH 中为特定输入编写错误消息? [复制]
【发布时间】:2019-10-29 23:02:32
【问题描述】:

我是 BASH 新手,脚本编写一般,正在编写 BASH 脚本,但不知道该怎么做

我目前有一个正在运行的脚本,其中有特定的用户输入,它会编写一个文件以供后续软件运行。

但是,软件需要特定的数字和短语才能运行,所以我想写一条错误消息,如果输入不正确,而不是脚本失败并从头开始,则会显示一条错误消息你有一个重做

##Writing inp.add Files##
printf "\n${bold}Writing inp.add file\n${normal}"
read -p "Number of Processors: " NPROC
read -p "Wavefunction File (with .wfx): " WFX
read -p "Coord file (CUBE or .txt): " COORD
echo "AOM_MAT OCCUP automatically picked"
read -p "Overlap (LO or LDO): " OVERLAP
printf "\nRunning Gaussian: ${bold}$JOBNAME \n${normal}"

【问题讨论】:

    标签: bash


    【解决方案1】:

    使用while cond ; do ... done:

    while true ; do
        read -p "Input var: " var
        [[ -n "$var" ]] && break
        echo "Please enter a non-empty value"
    done
    echo "You entered $var"
    

    将要求输入,直到它非空。

    【讨论】:

    • 这不是我的意思。例如在代码部分:读取 -p "Overlap (LO or LDO):" OVERLAP 软件的唯一选项是 LO 和 LDO,因此如果没有输入 2 个中的一个,则需要一条错误消息并重复那个问题
    • @ThomasBates 你应该用那句话来编辑你的问题,它使它很多不同,而且可能不再是重复的了。
    • @ThomasBates 四个重复项链接在问题的顶部。
    • 仅供参考,你不需要 [[ 1 == 1 ]] 你可以使用 [[ 1 ]]
    • 其实你也不需要[[。惯用的无限循环是while true 甚至是while :
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 2012-01-12
    • 1970-01-01
    • 2013-10-28
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多