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手册软件#壳参数展开法