选择后使用Bash结束命令

时间:2017-08-07 19:27:41

标签: bash

尝试理解为什么当我调用此函数时它不会结束

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键运行它会运行命令,但会继续。

1 个答案:

答案 0 :(得分:2)

如果您使用&&exit 0只有在command1command2退出状态为0时才会执行,即成功。根据他们的行为和行为方式,exit被调用,您的脚本会继续。

为避免这种情况,您可以将最后&&替换为;。考虑:

$ true && false && echo "Yes"    # echo not called
$ true && false; echo "Yes"
Yes