我将以下值存储在变量模式中
$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/