2014-08-29 86 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