Я думаю, вы не сможете заменить ${base.dir}
(кстати, не должно ли это быть ${Base.dir}
?) Так, как вы надеялись, главным образом потому, что, насколько я знаю, точки не допускаются в переменной имена в bash.
Что вы можете сделать, это вручную заменить часть ${base.dir}
на соответствующий путь, используя синтаксис подстановки bash. Например:
setConfigFile 'app.properties'
Result_dir_raw=$(configGet Result.dir)
Result_dir=${Result_dir_raw/'${base.dir}'/$(configGet Base.dir)}
echo ${Result_dir}
Я говорю «вручную», потому что вы все еще указываете в своем исходном коде, что шаблон, который вы хотите заменить, - ${base.dir}
, который, как я предполагаю, не тот, который вы хотели.
Теперь, если вы запустите это, вы увидите, что переменная ${Result_dir}
оценивается как ""/user/test/application"/result"
, что, очевидно, не путь, и это потому, что вы окружаете пути в app.properties
двойными кавычками, поэтому вам нужно либо избавиться от них в функции readConfigFile
, либо полностью потерять их в файле конфигурации, что для меня более логично.