Function
使用 break 命令作為函式的參數
那麼使用這樣的解決方案呢?
函式循環執行(循環?)。在那個循環中 - 我有另一個函式也使用循環。當第二個函式沒有從使用者那裡得到答案時 - 它發送
break 2
到停止循環並繼續主腳本操作。函式使用文件中設置的變數。
那麼,使用變數作為函式的參數是個好主意嗎?
一種可能更簡潔的替代方法是
answer
返回 0 或返回 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 }