Bash:从清单中获取输入

时间:2011-12-01 10:56:14

标签: bash

是否有可能包含目录字符串的清单文件fx。

#css

SomeDIR/crap0.css
SomeDIR/crap1.css
SomeDIR/crap2.css

#js

SomeDIR/crap0.js
SomeDIR/crap1.js
SomeDIR/crap2.js 

让我们调用这个文件list.mf

然后我有一个bash代码,我也想使用list.mf中定义的目录结构

可能是

cat %first entry in list.mf% > crap.txt
cat %second entr in list.mf% >> crap.txt

希望你能得到帮助,如果你不理解我的问题,可以提出进一步的问题:=)

/的Mathias

2 个答案:

答案 0 :(得分:0)

如果您的文件名确实包含数字,则可以

for i in {0..2} ; do
    grep crap$i'\.' list.mf >> crap.txt
done

如果没有,我会使用更高级的语言,如Perl。

答案 1 :(得分:0)

您尝试做的事情可以使用for循环或简单查找来完成,例如:

for f in */*css ; do
    cat $f >> OUTPUT.file
done
# SAME
find Somedir/ -iname '*.css' -exec cat \{\} >> OUTPUT.file \;

但是如果你想使用config(manifest)文件,你可以在脚本中source,但是这样你必须在配置中使用正确的(bash)语法以及例如文件列表应该是一个数组等,就像这样" manifest.file"文件内容:

#css
export cssfiles=('SomeDIR/crap0.css' 'SomeDIR/crap1.css' 'SomeDIR/crap2.css')
#js
export jsfiles=('SomeDIR/crap0.js' 'SomeDIR/crap1.js' 'SomeDIR/crap2.js'

在你的剧本中:

source /whatever/path/to/manifest.file
# ... then process those variables  
for elem in  ${cssfiles[*]} ; do
    cat $elem >> OUTPUTFILE
done
# and
for elem in  ${jsfiles[*]} ; do
    cat $elem >> ANOTHER_OUTPUTFILE
done

如果您需要manifest文件的特定格式,您仍然可以编写一些awk || sed || grep脚本来提取正确的列表。

HTH