bash - 在返回/退出函数之前弹出

标签 bash

在 bash 中,在返回/退出函数之前 popd 的正确方法是什么?例如,

function fn () {
    pushd ~ >/dev/null
    if [ $1 = $2 ]; then
        return 0;
    elif [ $2 = $3 ]; then
        return 1;
    else
        return 2;
    fi
    popd >/dev/null
}

我应该在每次返回之前写 popd 吗?或者,我应该换一种方式吗?

最佳答案

为此我可能会这样做:

fn() {
    pushd ~ >/dev/null
    if [ "$1" = "$2" ]; then
        ret=0
    elif [ "$2" = "$3" ]; then
        ret=1
    else
        ret=2
    fi
    popd >/dev/null
    return $ret
}

这样我就不必在每次返回之前重复“清理”代码。

另一种方法是在子 shell 中完成工作,并将 cd 到所需的目录,尽管该子 shell 无法修改父环境(毕竟这是我们想要的一部分) .

fn() (
    cd ~
    if [ "$1" = "$2" ]; then
        return 0
    elif [ "$2" = "$3" ]; then
        return 1
    else
        return 2
    fi
)

关于bash - 在返回/退出函数之前弹出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40473846/

相关文章:

bash - 根据 bash 中的字段值合并列

bash - 负匹配在参数扩展中extglob是如何工作的

linux - 设置文件夹 A 和 B 的差异,即 |A-B| = C

linux:/dev/null/: 是一个目录

linux - bash - 脚本的命令行参数

linux - 当需要用户输入时,如何在启动时自动运行应用程序?

bash - || 是什么意思: in this line of bash script from an rpm spec file do?

bash - 如何用 "disown"替换 "screen"?

java - 使用 crontab 中的 java 文件执行 bash 文件

bash - 比较目录中不包括多个硬链接(hard link)的所有文件的 md5