特定の状況での終了機能

特定の状況での終了機能

短くて長いオプションを繰り返す次の機能があります。for短いオプションに一致するものがある場合は、最初のforループを終了します。しかし、関数を終了し、長いオプションのテストをスキップしたいと思います。この問題にどのように対処する必要がありますか?

  xerxex ()
  {

   for short_opt in "${glob_pary[@]}"
   do
     pthis
     pthat 
     [[ something ]] &&  break
   done
   
   exit_function 

   for long_opt in "${glob_qary[@]}"  # [L]
   do
     qthis
     qthat
     [[ something ]] &&  break
   done

  }

答え1

return関数をそのままにしてbreakループを停止します。

編集:しないでくださいexit!スクリプトを対話的に実行すると、プロセスは終了します。

答え2

コードのロジックは少し不明ですが、1つのオプションは、このコードブロックを入力する前にゼロ以外の引数をテストすることです。

xerxex ()
{
  if [ ${#glob_pary[@]} -gt 0 ]; then
    for short_opt in "${glob_pary[@]}"
    do
      pthis
      pthat 
      [[ something ]]
    done
  elif [ ${#glob_qary[@]} -gt 0 ]; then
    for long_opt in "${glob_qary[@]}"  # [L]
    do
      qthis
      qthat
      [[ something ]]
    done
  fi
}

関連情報