![使用break命令作为函数的参数](https://linux22.com/image/3548/%E4%BD%BF%E7%94%A8break%E5%91%BD%E4%BB%A4%E4%BD%9C%E4%B8%BA%E5%87%BD%E6%95%B0%E7%9A%84%E5%8F%82%E6%95%B0.png)
使用这样的解决方案怎么样?
函数在循环中运行(循环?)。在那个循环中 - 我有另一个函数也使用循环。当第二个函数没有得到用户的答复时 - 它发送break 2
停止循环并继续主脚本操作。
函数使用文件中设置的变量。
那么,使用变量作为函数的参数是个好主意吗?
答案1
一种可能更简洁的替代方案是answer
return 0 或 return 1,具体取决于用户是否说yes
或no
。然后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
}