我将以下值存储在变量模式中

$WS/*.asd

在我的环境中,$WS计算结果为有效目录(/home/administrator/dev/workspaces/)。此目录中有一些.asd文件。我想将pattern变量扩展到此目录中所有匹配的.asd文件。不过,我尝试过以下命令,但它们都不起作用:
expand "$pattern"
expand: $WS/*.asd: No such file or directory

ls $pattern
ls: cannot access $WS/*.asd: No such file or directory

eval $pattern
/home/administrator/dev/workspaces/a.asd: Permission denied

echo $pattern
$WS/*.asd

我得到模式作为输入。我知道如何将模式扩展到包含所有匹配文件的列表中。
编辑:详细解释问题
我可以在任何序列中得到env vars和通配符的任意组合。例如,输入可以是:/home/$USER/*/$DIR/*.my_extension。问题是我想计算所有env vars并扩展通配符。

最佳答案

除了eval之外,您还可以试试这个find

pattern='$WS/*.asd'

find "$WS" -name "${pattern##*/}"

编辑:根据您编辑的问题,您似乎必须使用:
eval echo "$pattern"

关于bash - 扩展存储在bash中变量中的文件路径模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31142826/

10-16 11:45