【发布时间】:2015-02-11 00:30:59
【问题描述】:
我有一个包含多个输入的脚本,该脚本最终会启动下载,一旦下载完成,我想提示用户在他们想要下载其他内容时重新开始该过程。
while true;do
read -p "Is this correct? (yes/no/abort) " yno
case $yno in
[Yy]*) break;;
[Nn]*) echo "Lets Start Over" 'restart script code goes here';;
[Aa]*) exit 0;;
*) echo "Try again";;
esac
done
echo
echo "Starting $build download for $opt1 from Jenkins"
echo
while true;do
read -p "Do you want to download something else? " yesno
case $yesno in
[Yy]* ) 'restart script code goes here';;
[Nn]* ) break;;
* ) echo "Try Again "
esac
done
【问题讨论】:
-
您可以使用
exec $0将当前调用替换为新调用,从顶部开始(并且不使用新进程,这有一些优势)。或者,使用redo=yes; while [ "$redo" = "yes" ]; do ...your current code...; done,如果用户不想再次尝试,您可以在其中修改代码以设置redo=no。在两者之间,循环更为传统。 -
这与shell脚本无关,您需要在开始实现它们之前学习有关条件语句和循环的基础知识。我建议先创建一个程序流程图。 (用铅笔)