我是shell脚本的小伙子,我对此感到疑惑:
#!/usr/local/bin/bash
number=5
echo "Enter 'yes' to continue, 'no' to abort:"
read choice
if [ $choice = yes ]; then
while [ $number -lt 10 ]; do
echo "The script is now looping!"
done
elif [ $choice = no ]; then
echo "Loop aborted"
else
echo "Please say 'yes' or 'no'"
read choice
# What now?
fi
如果你没有指定“是”或“否”,我将如何重新检查你的$选择的if语句(第13行)?
谢谢。
答案 0 :(得分:2)
您可以将代码从“echo Enter ...”放到外部“while”循环中的fi。 while循环将循环,直到$ choice为“yes”或“no”。这样做时删除最后一个“else”子句(这将是多余的)。
P.S。你需要在内部while循环中增加(或改变)$ number。否则,它将无限运行。
答案 1 :(得分:2)
您可以跟踪是否循环一个名为invalid_choice
invalid_choice=true
while $invalid_choice; do
read choice
if [ "$choice" = "yes" ]; then
invalid_choice=false
...
elif [ "$choice" = "no" ]; then
invalid_choice=false
...
else
echo "Please say yes or no"
done
如果你需要做很多事情,你可以将它概括为一个函数:
function confirm() {
local ACTION="$1"
read -p "$ACTION (y/n)? " -n 1 -r -t 10 REPLY
echo ""
case "$REPLY" in
y|Y ) return 0 ;;
* ) return 1 ;;
esac
}
confirm "Do something dangerous" || exit