在某个脚本中,让我们称之为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
它就像一个魅力。我尝试使用'',""在该路径周围的属性,但没有成功。任何人都可以告诉我如何解决问题,在我的属性中有这个路径,所以找到会正确使用它吗?
答案 0 :(得分:1)
对我而言,您似乎错误地分配了变量$DIRECTORY
。尝试执行相同的操作但在common.properties文件中没有$
至于启动代码已更改 - 这是更新版本的答案。
问题是大括号扩展:{}
应该在执行find命令之前进行评估。为此,您需要在代码上明确调用eval
。试试这个:
eval找到$ DIRECTORY
这应该有用。
注意:大括号扩展可能无法正常使用其他shell而不是bash 3 +
答案 1 :(得分:0)
从$
$DIRECTORY="$ENVS/$ENVD/{DIR1,DIR2}/"
您必须将值分配给DIRECTORY而不执行它。