Function

使用 break 命令作為函式的參數

  • October 29, 2013

那麼使用這樣的解決方案呢?

函式循環執行(循環?)。在那個循環中 - 我有另一個函式也使用循環。當第二個函式沒有從使用者那裡得到答案時 - 它發送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
}

引用自:https://unix.stackexchange.com/questions/98056