0

这是我第一次发帖,过去我使用过这里的代码示例,感谢您的帮助。

我目前有一个包含几十个函数的大型 Bash 脚本,并且它正在增长,并且变得越来越难以管理。每个功能确实是一个完全独立的模块,并且为了便于开发,并且能够轻松地允许社区贡献的模块而无需我需要集成每个模块,我想添加具有单独模块文件的功能,主脚本会自动看看,加进去。

目前我有:(超级简化)

脚本.sh

#! /bin/bash

function one {
 stuff
}

function two {
 different stuff
}

one
two
exit

但希望有一个自动检查目录的脚本(比如“modules/”),并且任何后缀为.module的文件(例如lights.module)都将被加载到菜单中(我有一个功能很好的whiptail菜单系统已经)。

我已经从 Google 和 stackoverflow 尝试了很多东西,但我似乎碰壁了。

我可以创建一个包含模块名称列表的文件 - 因此可以随意放入一个模块,它会出现在列表中:

for entry in /home/tony/scripts/test/modules/*
do
 echo "$entry" >> modules.list # Append the name of present modules to the list of modules
done

但是我如何让我的脚本知道这些模块名称,并对它们做一些事情(即将它们放入一个whiptail 菜单,如果选择了它们就调用它们)。

4

2 回答 2

1

Have you considered having a folder, and then running:

for module in somefolder/*.module; do
    source $module
done

If need be, you can alphabetically sort your modules in the desired execution order

于 2013-02-06T20:49:50.933 回答
0

KSH 对这类事情有自动加载功能——似乎意味着 Bash 有一个可用的端口。

于 2013-02-06T20:45:10.400 回答