2014-08-29 46 views
0

在一定的脚本,让我们把它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 

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

回答

1

对我来说,你看起来像你错误地分配变量$DIRECTORY。尝试做相同的但没有$在您的common.properties文件中

至于起始代码已更改 - 以下是更新版本的答案。

问题是大括号扩展{}应执行find命令之前进行评估。要做到这一点,你需要明确地在你的代码上调用eval。试试这个:

EVAL发现$ DIRECTORY

这应该工作。

注:括号扩展可能无法正常对其他炮弹比庆典3+

+0

刚纠正我的问题,那不是。 – 2014-08-29 09:14:02

+1

@MateuszChrzaszcz,看看更新的答案。 – WhiteAngel 2014-09-01 08:50:29

+0

你让我的一天有了这个答案,谢谢! :) – 2014-09-03 11:08:31

0

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

你必须赋值到目录,但不执行它。

+0

工作只是纠正了我的问题,这不是它。 – 2014-08-29 09:15:07