2013-02-06 26 views
0

这是我第一次发布,我过去使用过这里的代码示例,并感谢帮助。获取Bash脚本来检查目录中的文件并根据每个文件执行操作

我目前有一个很大的Bash脚本,它有很多功能,而且它正在增长,并且越来越难以管理。每个函数实际上都是一个完全独立的模块,为了便于开发,并且能够轻松地允许社区贡献的模块,而不需要集成每个模块,我想添加具有独立模块文件的功能,主脚本会自动见,并添加

目前我有:(超简体)

script.sh

#! /bin/bash 

function one { 
stuff 
} 

function two { 
different stuff 
} 

one 
two 
exit 

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

我已经尝试了一些东西,从谷歌和从计算器,但我似乎已经打了一堵墙。

我可以创建模块名称的列表的文件 - 这样的模块可以随意丢弃的,它出现在列表中:

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菜单中,并在选择时调用它们)。

+0

这个问题让我想起了很多[模块的模块](http://linux.die.net/man/1/module)实用程序。如果你想用bash脚本来做到这一点,我建议使用一个数组来加载你想要的任何模块,并弹出你不想要的任何模块。我可以在今晚晚些时候添加一个例子。 – Steve

回答

0

KSH有自动加载的那种东西 - this似乎暗示有一个端口可用于Bash。

1

你有没有考虑有一个文件夹,然后运行:

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

如果需要,你可以按字母顺序排序您在所期望的执行顺序

+0

如果模块来源,它可能是一个要求,每个模块包含任何功能以外的线路,如:'modulelist + =('modulename')'其中modulelist是一个数组。如果模块文件中有多个功能,则每个功能都可以添加到列表中。 ('modulelist =($ {modulelist [@]}'modulename')'如果+ =操作符在特定版本的bash中导致问题。) – William

+0

用户可能只想运行一两个模块。我想我真的需要获取模块名称列表,每个名称都分配了一个唯一的变量。也许阵列是我应该看的地方? (数组的新功能)。 – tonyhughes

+0

@tonyhughes所以,当然,你可以创建一个数组,其中的键是模块的名称,值是模块的路径,让用户选择,然后源(或运行)只有你想要的。不知道我们正在回答你的问题......以防万一,这里是[bash阵列教程](http://www.thegeekstuff.com/2010/06/bash-array-tutorial/) – Miquel

相关问题