Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果答案正确则提示,然后在Bash中验证_Bash_Unix - Fatal编程技术网

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

如果答案正确则提示,然后在Bash中验证,bash,unix,Bash,Unix,这是安装开始时执行的初始脚本。它将捕获用户输入,然后将其写入调用变量的另一个bash脚本。它工作得很好,但是,我想为每个问题添加一个确认 例如,在用户输入电子邮件后,我希望它能回显他们键入的内容,用是或否确认其正确性。如果是,则将其写入另一个脚本并继续下一个问题。如果没有,则返回语句的开头,以便他们更正答案。一旦完成,我想重复一下结果 如果有人能提供一些建议,那就太好了。我在看这些例子 注: local声明具有函数作用域的变量。 它采用与declare相同的参数——将ans变量声明为大写

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

例如,在用户输入电子邮件后,我希望它能回显他们键入的内容,用是或否确认其正确性。如果是,则将其写入另一个脚本并继续下一个问题。如果没有,则返回语句的开头,以便他们更正答案。一旦完成,我想重复一下结果

如果有人能提供一些建议,那就太好了。我在看这些例子

注:

  • local
    声明具有函数作用域的变量。
    • 它采用与
      declare
      相同的参数——将
      ans
      变量声明为大写
  • while:;do
    --:命令基本上是返回成功的no op,因此这是一个无限循环。
  • ${ans:0:1}
    从长度为1的第0个字符(第一个字符)开始提取子字符串
注:

  • local
    声明具有函数作用域的变量。
    • 它采用与
      declare
      相同的参数——将
      ans
      变量声明为大写
  • while:;do
    --:命令基本上是返回成功的no op,因此这是一个无限循环。
  • ${ans:0:1}
    从长度为1的第0个字符(第一个字符)开始提取子字符串
注:

  • local
    声明具有函数作用域的变量。
    • 它采用与
      declare
      相同的参数——将
      ans
      变量声明为大写
  • while:;do
    --:命令基本上是返回成功的no op,因此这是一个无限循环。
  • ${ans:0:1}
    从长度为1的第0个字符(第一个字符)开始提取子字符串
注:

  • local
    声明具有函数作用域的变量。
    • 它采用与
      declare
      相同的参数——将
      ans
      变量声明为大写
  • while:;do
    --:命令基本上是返回成功的no op,因此这是一个无限循环。
  • ${ans:0:1}
    从长度为1的第0个字符(第一个字符)开始提取子字符串

我确实看到了这一条,但如果用户选择“否”,则它只是一条“是”或“否”语句,没有回环。如果用户选择“否”,则它只是取消了我不需要的内容。我确实看到了这一条,但它只是一条“是”或“否”语句,没有回环。如果用户选择“否”,则它只是取消了我不需要的内容。我确实看到了这一条,然而,它只是一个“是”或“否”语句,如果用户选择“否”,则不会返回循环,它只会取消我不需要的操作。我确实看到了这个语句,但是,如果用户选择“否”,则它只是一个“是”或“否”语句,没有循环返回,它只会取消我不需要的内容。非常感谢您,这是我所需要的最简洁和最基本的内容。我不想把它拖出来,但您是否愿意提供此代码的简要说明,以便我可以学习?+1。注意,
local-u
/
declare-u
需要bash4+;早期版本可以只使用
local
,和
[[$ans=~^[yY]]]]
作为条件。非常感谢您,这是我所需要的干净和最小的。不要拖出这段代码,但您愿意提供此代码的简要解释,以便我可以学习吗?+1。注意,
local-u
/
declare-u
需要bash4+;早期版本可以只使用
local
,和
[[$ans=~^[yY]]]]
作为条件。非常感谢您,这是我所需要的干净和最小的。不要拖出这段代码,但您愿意提供此代码的简要解释,以便我可以学习吗?+1。注意,
local-u
/
declare-u
需要bash4+;早期版本可以只使用
local
,和
[[$ans=~^[yY]]]]
作为条件。非常感谢您,这是我所需要的干净和最小的。不要拖出这段代码,但您愿意提供此代码的简要解释,以便我可以学习吗?+1。注意,
local-u
/
declare-u
需要bash4+;早期版本可以仅使用
local
[[[$ans=~^[yY]]]]
作为条件。
#!/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
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