某种情况下退出函数

某种情况下退出函数

我有以下函数可以循环短选项和长选项。如果存在带有短选项的匹配项,我将退出 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

代码的逻辑有些不清楚,但一种选择可能是在输入该代码块之前测试非零数量的参数:

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
}

相关内容