关于unix:如果答案正确则提示,然后在Bash中验证

Prompt if answer is correct then validate in Bash

这是在安装开始时执行的初始脚本。它将捕获用户输入,然后将其写入调用变量的另一个bash脚本。它工作得很好,但是,我想为每个问题添加一个确认。

例如,在用户输入电子邮件后,我希望它回显他们键入的内容,以确认它是正确的,并输入"是"或"否"。如果是,则将其写入另一个脚本,然后转到下一个问题。如果不返回到语句的开头,则可以更正答案。完成后,我想回传结果。

如果有人能提供一些很好的建议。我在bash中查看了这些示例,如何向任何命令或别名添加"您确定[是/否]"。

1
2
3
4
5
#!/bin/bash
read -p"Who is the primary Email recipient? :" TO
    echo"TO=$TO">> /var/tmp/ProcMon
read -p"What is the server hostname :" FROM
    echo"FROM=$FROM">> /var/tmp/ProcMon


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function prompt_and_confirm {
    local var=$1
    local prompt=$2
    local value
    local -u ans

    while :; do
        read -p"$prompt" value
        read -p"You entered: '$value': confirm [y/n]" ans
        [[ ${ans:0:1} =="Y" ]] && break
    done
    echo"$var=$value"
}

prompt_and_confirm TO  "Who is the primary Email recipient? :">> /var/tmp/ProcMon
prompt_and_confirm FROM"What is the server hostname? :"        >> /var/tmp/ProcMon

注释:

  • local变量与函数的建议的范围内。
    • 它需要的参数的状态变量的declare- ans是上下。
    • www.gnu.org http:/ / / / / / bashref.html bash手册软件宣布#指数
  • while :; do——:命令是,基本上,这是在操作系统的成功模式的回报,这是一个无限循环。
    • www.gnu.org http:/ / / / / / bashref.html bash手册软件内置的壳- #伯恩
  • ${ans:0:1}提取物的子串的开始字符(在零长度值1(第一个字符)
    • www.gnu.org http:/ / / / / / bashref.html bash手册软件#壳参数展开法