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

Он работает как шарм. Я пытался использовать '', "" в свойствах вокруг этого пути, но безуспешно. Может ли кто-нибудь сказать мне, как решить проблему, чтобы иметь этот путь в моих свойствах, поэтому find будет использовать его правильно?

ответ

1

У меня похоже, что у вас задана переменная $DIRECTORY. Попробуйте сделать то же самое, но без $ внутри вашего файла common.properties

Что касается исходного кода, то это ответ на обновленную версию.

Проблема в том, что Расширение скобки: {} должно быть оценено до выполнения команды find. Для этого вам нужно явно позвонить eval в свой код. Попробуйте это:

Eval находка $ DIRECTORY

Это должно работать.

Примечание: фигурных скобках может не работать должным образом для других оболочек, чем Баш 3+

+0

Только что исправил мой вопрос, это не так. –

+1

@MateuszChrzaszcz, взгляните на обновленный ответ. – WhiteAngel

+0

Ты сделал мой день с этим ответом, спасибо! :) –

0

Удалите $ из $DIRECTORY="$ENVS/$ENVD/{DIR1,DIR2}/"

Вы должны присвоить значение тел.справ и не выполнить его.

+0

Просто исправил мой вопрос, что это не так. –

Смежные вопросы