参数化从属性文件中查找

时间:2014-08-29 09:05:09

标签: regex bash

在某个脚本中,让我们称之为search.sh我有:

search.sh:

#!/bin/bash
. $CONFIG/common/common.properties
FILES_TO_CHECK=$(find $DIRECTORY -type f -regex $PATTERN)

在文件公共属性中我有这样的东西:

DIRECTORY="$ENVS/$ENVD/{DIR1,DIR2}/"

每当我执行我收到的脚本时:

find: /home/env/dom/{DIR1,DIR2}: No such file or directory

但如果我这样使用它:

find $ENVS/$ENVD/{DIR1,DIR2}/ -type f -regex $PATTERN

它就像一个魅力。我尝试使用'',""在该路径周围的属性,但没有成功。任何人都可以告诉我如何解决问题,在我的属性中有这个路径,所以找到会正确使用它吗?

2 个答案:

答案 0 :(得分:1)

对我而言,您似乎错误地分配了变量$DIRECTORY。尝试执行相同的操作但在common.properties文件中没有$

至于启动代码已更改 - 这是更新版本的答案。

问题是大括号扩展{}应该在执行find命令之前进行评估。为此,您需要在代码上明确调用eval。试试这个:

  

eval找到$ DIRECTORY

这应该有用。

注意:大括号扩展可能无法正常使用其他shell而不是bash 3 +

答案 1 :(得分:0)

$

中删除$DIRECTORY="$ENVS/$ENVD/{DIR1,DIR2}/"

您必须将值分配给DIRECTORY而不执行它。