【问题标题】:Stopping script from nested function [duplicate]从嵌套函数停止脚本[重复]
【发布时间】:2019-09-07 08:02:34
【问题描述】:

我有这个脚本:

#!/bin/bash

function_1() {
    function_2
    printf world
}

function_2() {
    printf "hello "
    return 1
    printf "not printed"
}

function_1

打印hello world。我想在第一个 printf 之后停止执行 function_2 中的脚本。所以脚本应该只打印hello。我试过return 1,但这只会返回到function_1。我还尝试按照earlier answer 中的建议发送终止信号,但得到的结果与return 1 相同。

【问题讨论】:

    标签: bash


    【解决方案1】:

    您可以添加exit 0 以在所需点以 0 退出状态退出脚本:

    function_2() {
        printf "hello "
        exit 0
        ...
    

    【讨论】:

    • 谢谢你的作品。但是如果我把这两个函数放在.bashrc 然后从终端调用function_1,终端就会关闭。
    【解决方案2】:

    我相信你想要 exit 内置。来自Bash manpage

    exit [n]

    使 shell 以 n 状态退出。如果省略 n,则退出状态为最后执行的命令的状态。在 shell 终止之前执行EXIT 上的陷阱。

    【讨论】:

      猜你喜欢
      • 2013-12-28
      • 2019-04-04
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 2015-08-01
      相关资源
      最近更新 更多