gpt4 book ai didi

bash - 在 shell 脚本中只包含一次脚本

转载 作者:行者123 更新时间:2023-11-29 09:26:07 25 4
gpt4 key购买 nike

我想将文件作为“支持”脚本包含到 shell 脚本中。既然他们要设置东西和检查环境,我只想让他们执行一次。

我的方法是创建一个全局数组,检查该数组中是否存在脚本名称。如果没有,将其添加到数组并“获取”外部文件。

当前代码如下所示:

 function array_contains() { # array, value
local element
for element in $1; do
[[ "$element" == "$2" ]] && return 0
done

return 1
}

declare -a LOADED_SUPPORT_SCRIPTS

function require_support() { # file
# Check if we loaded the support already
array_contains ${LOADED_SUPPORT_SCRIPTS[@]} $1 && return 0

# Add loaded support to array
LOADED_SUPPORT_SCRIPTS=("${LOADED_SUPPORT_SCRIPTS[@]}" "$1")

log -i "Including support for '$1'"
source "$BASE_DIR/supports/$1.sh"

return 1
}

虽然这在理论上应该可行(至少对我而言),但这段代码每次都会失败。数组以某种方式被重置(即使我从未在其他地方访问过它)并且始终在开头包含一个“/”条目。

通过进一步谷歌搜索我发现的问题 this "solution"这需要在我想要包含的每个脚本中有一个新的变量名——就像 C/C++ 那样。虽然这确实是个好主意,但我希望我的代码尽可能小,我并不真正关心数组迭代的性能。

我真的很想知道是否有替代方法,或者我在代码中做错了什么可以修复。提前致谢!

最佳答案

也许你可以尝试使用 Shell Script Loader 为此。在著名的类似主题中查看有关它的帖子:https://stackoverflow.com/a/3692080/445221 .

关于bash - 在 shell 脚本中只包含一次脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23969876/

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