gpt4 book ai didi

bash - 一个 sourced bash 片段如何有条件地为 sourcing shell 提供一个功能?

转载 作者:行者123 更新时间:2023-11-29 08:56:58 27 4
gpt4 key购买 nike

是否可以获取 Bash 片段的源代码,但仅在特定条件成立时才实际提供其中的函数?

所以我要问的是,我可以无条件地获取目录中的所有文件,但获取的文件包含是否向采购外壳提供功能的逻辑。

例子:

  • .bashrc sources 整个子文件夹 .bashrc.d
  • .bashrc.d/xyz提供一个函数 adduser2group适用于 usermod 的旧系统不处理 -a -G
  • .bashrc.d/xyz应该向采购 shell 提供该功能,如果它在这样的旧系统上运行。

我目前的方法是有条件地创建一个 alias名为 adduser在 Debian 程序之后(alias adduser=adduser2group)。所以我只实现了 adduser <user> <group>语义,但仍然有帮助。

是否有不需要此解决方法的解决方案?毕竟这种方法意味着我希望避免的名称冲突的机会。

最佳答案

您可以使用标准 shell 逻辑来控制函数是否已定义。

lib.sh:

if true; then
foo() {
echo foo
}
else
bar() {
echo bar
}
fi

测试:

#!/bin/bash

. ./lib.sh
foo
bar

运行时,只定义了foo:

$ bash test
foo
test: line 5: bar: command not found

用更适合您的应用程序的逻辑替换 if true……

关于bash - 一个 sourced bash 片段如何有条件地为 sourcing shell 提供一个功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14463928/

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