获取Bash脚本以检查目录中的文件并根据每个文件执行操作

时间:2013-02-06 20:29:30

标签: bash

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

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

目前我有:(超级简化)

script.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菜单中,如果选中则调用它们。)

2 个答案:

答案 0 :(得分:1)

您是否考虑过拥有一个文件夹,然后运行:

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

如果需要,您可以按所需的执行顺序按字母顺序对模块进行排序

答案 1 :(得分:0)

KSH为这种事情进行了自动加载 - this似乎意味着Bash可以使用一个端口。