How do you return to a sourced bash script?

后端 未结 3 2135
后悔当初
后悔当初 2020-12-01 13:40

I use "source" inside a bash script, as follows:

#!/bin/bash
source someneatscriptthatendsprematurely.sh

I would like to exit from

3条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-01 14:13

    You need the return statement:

    return [n]

    Causes a function to exit with the return value specified by n. If n is omitted, the return status is that of the last command executed in the function body. If used outside a function, but during execution of a script by the . (source) command, it causes the shell to stop executing that script and return either n or the exit status of the last command executed within the script as the exit status of the script. If used outside a function and not during execution of a script by ., the return status is false. Any command associated with the RETURN trap is executed before execution resumes after the function or script.

    You can see this in action with the following two scripts:

    script1.sh:
        . script2.sh
        echo hello again
    
    script2.sh:
        echo hello
        return
        echo goodbye
    

    When you run script1.sh, you see:

    hello
    hello again
    

提交回复
热议问题