尝试理解为什么当我调用此函数时它不会结束
function_call () {
while true; do
read -p "Do you wish to do this?" yn
case $yn in
[Yy]* ) command1 && command2 && exit 0 ;;
[Nn]* ) break;;
* ) echo "Please answer yes or no.";;
esac
done
}
在Y上,它应该运行命令然后退出。在N上,它应该继续运行脚本的其余部分。
不确定是否需要&&
,但是如果我按Y键运行它会运行命令,但会继续。
答案 0 :(得分:2)
如果您使用&&
,exit 0
只有在command1
和command2
退出状态为0时才会执行,即成功。根据他们的行为和行为方式,exit
会不被调用,您的脚本会继续。
为避免这种情况,您可以将最后&&
替换为;
。考虑:
$ true && false && echo "Yes" # echo not called
$ true && false; echo "Yes"
Yes