gpt4 book ai didi

linux - 双重使用 bash 脚本 - 源代码和 exec 子 shell?动态返回/退出?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:44:40 24 4
gpt4 key购买 nike

我当前的设置从一个函数开始,该函数表面上位于 .bashrc(准确地说是 .bash_it/custom/funcs.bash)

#!/usr/bin/env bash
function proset() {
. proset-core "$@";
}

proset-core 对 secret 进行一些解密并将这些 secret 导出到 session ,因此需要 . 而不是仅将其作为脚本/子 shell 运行。

如果 proset-core 出现问题,我使用 return 而不是 exit 因为我不希望 SSH 连接掉线了。

if [ "${APP_JSON}" = "null" ] ; then
echo -e "\n${redtext}App named $NAME not found in ${APPCONF}. Aborting.${resettext}\n";
return;
fi

这在导出的 proset 函数的上下文中是有意义的,但排除了作为脚本的使用,因为 return 除非在函数内才有效。

有没有一种方法可以检测它是如何被调用的,并根据需要返回一个或另一个?

最佳答案

尝试返回,如果失败则退出

_retval=$?
return 2>/dev/null || exit "$_retval"

在顶层(函数外部)调用return 后,您的代码仍将继续的唯一情况是您被执行而不是源代码,如果发生这种情况,退出是正确的事情。

关于linux - 双重使用 bash 脚本 - 源代码和 exec 子 shell?动态返回/退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49163293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com