使用break命令作为函数的参数

使用break命令作为函数的参数

使用这样的解决方案怎么样?

函数在循环中运行(循环?)。在那个循环中 - 我有另一个函数也使用循环。当第二个函数没有得到用户的答复时 - 它发送break 2停止循环并继续主脚本操作。

函数使用文件中设置的变量。

那么,使用变量作为函数的参数是个好主意吗?

答案1

一种可能更简洁的替代方案是answerreturn 0 或 return 1,具体取决于用户是否说yesno。然后answer在调用的地方测试 的值,只有answer返回 0 时才执行该操作。

根据您之前的脚本,它看起来像这样:

while tomcat_running && user_wants_to_stop_tomcat; do
    echo "$tomcat_status_stopping"
    kill $RUN
    sleep 2
done

function tomcat_running() {
    check_tomcat_status
    [ -n "$RUN" ]
}

function user_wants_to_stop_tomcat() {
    answer "WARNING: Tomcat still running. Kill it? "
}

function answer() {
    while true; do
        printf "$1"
        read response
        case $response in
        [yY][eE][sS]|[yY])
            return 0
            ;;
        [nN][oO]|[nN])
            return 1
            ;;
        *)
            printf "Please, enter Y(yes) or N(no)!\n"
            ;;
        esac
    done
}

相关内容