Bash确认输入或重新输入
我有一个非常简单的BASH脚本,询问用户是否希望输入一些输入。响应为Bash确认输入或重新输入,bash,prompt,Bash,Prompt,我有一个非常简单的BASH脚本,询问用户是否希望输入一些输入。响应为y或n 如果他们输入n,脚本将退出 如果他们输入y,则会询问他们一些问题。最后,我想让他们确认输入 如果是正确的,我们将继续,如果不是,我想返回问题,重新输入信息 到目前为止,我已经: while true; do echo -e "Enter details ? " read yn case $yn in [Nn]* ) exit;; [Yy]* )
y
或n
如果他们输入n
,脚本将退出
如果他们输入y
,则会询问他们一些问题。最后,我想让他们确认输入
如果是正确的,我们将继续,如果不是,我想返回问题,重新输入信息
到目前为止,我已经:
while true; do
echo -e "Enter details ? "
read yn
case $yn in
[Nn]* ) exit;;
[Yy]* )
echo -e "description"
read desc
echo -e "Address"
read address
* ) echo "Please answer yes or no.";;
esac
done
这似乎很好,所以我试着添加确认。。但这不起作用
while true; do
echo -e "Enter details ? "
read yn
case $yn in
[Nn]* ) exit;;
[Yy]* )
echo -e "description"
read desc
echo -e "Address"
read address
echo -e "$desc - $address"
while true; do
echo -e "\nAre these details correct ? "
read conf
case $conf in
[Nn]* ) // return to enter details //
[Yy]* ) // carry on with the details entered // break;;
esac
done
* ) echo "Please answer yes or no.";;
esac
done
目的如下
用户选择y
并输入描述和地址。该页面向他们显示了他们输入内容的摘要,并询问他们这些详细信息是否正确?
如果正确,我们继续,脚本继续。输入错误,然后脚本返回它们以输入描述,然后输入地址
有人能建议怎么做吗。
谢谢您可以再添加一个循环级别,并使用可选级别指示器
break[n]
:
while true; do
echo -e "Enter details ? "
read yn
case $yn in
[Nn]*) exit;;
[Yy]*)
while true; do
echo -e "description"
read desc
echo -e "Address"
read address
echo -e "$desc - $address"
while true; do
echo -e "\nAre these details correct ? "
read conf
case $conf in
[Nn]* ) break 1;;
[Yy]* ) break 3;;
esac
done
done;;
*) echo "Please answer yes or no.";;
esac
done
不要为此使用
案例
。
为您编写的脚本示例:
#!/bin/bash
while true; do
echo -e "Enter details ?(y/n)"
read yn
if [[ $yn == "y" ]];then
echo -e "description"
read desc
echo -e "Address"
read address
echo -e "$desc - $address"
while true; do
echo -e "\nAre these details correct ? (y/n)"
read conf
if [[ $conf == "y" ]];then
echo "All done"
break
elif [[ $conf == "n" ]];then
break
else
continue
fi
done
elif [[ $yn == "n" ]];then
break
else
continue
fi
好了:
DONE=""
while [ "$DONE" != "true" ]; do
echo -e "Enter details ? "
read yn
case $yn in
[Nn]* ) exit;;
[Yy]* )
echo -e "description"
read desc
echo -e "Address"
read address
echo -e "$desc - $address"
while true; do
echo -e "\nAre these details correct ? "
read conf
case $conf in
[Nn]* )
break;;
[Yy]* )
echo "doing something with your values"
DONE="true"
break;;
esac
done
;;
* ) echo "Please answer yes or no.";;
esac
done
感谢我的理智,您能确认break1和break3的中断位置吗。
break1
与break
相同:它退出最里面的循环<代码>中断3,在这种情况下退出最外层的循环。快速跟进此问题。如果他们回答“否”,则详细信息不正确,我们将返回循环,但如何用他们的最后一个答案自动填充问题?