How to exit a function in bash

前端 未结 3 1923
猫巷女王i
猫巷女王i 2021-01-30 15:18

How would you exit out of a function if a condition is true without killing the whole script, just return back to before you called the function.

Example



        
3条回答
  •  你的背包
    2021-01-30 15:57

    If you want to return from an outer function with an error without exiting you can use this trick:

    do-something-complex() {
      # Using `return` here would only return from `fail`, not from `do-something-complex`.
      # Using `exit` would close the entire shell.
      # So we (ab)use a different feature. :)
      fail() { : "${__fail_fast:?$1}"; }
    
      nested-func() {
          try-this || fail "This didn't work"
          try-that || fail "That didn't work"
      }
      nested-func
    }
    

    Trying it out:

    $ do-something-complex
    try-this: command not found
    bash: __fail_fast: This didn't work
    

    This has the added benefit/drawback that you can optionally turn off this feature: __fail_fast=x do-something-complex.

    Note that this causes the outermost function to return 1.

提交回复
热议问题