首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配目录中的目录

匹配目录中的目录
EN

Stack Overflow用户
提问于 2016-09-24 19:57:33
回答 2查看 27关注 0票数 2

目录工作区包含5个项目:

代码语言:javascript
复制
project-1
project-2
project-3
project-4
project-5

我想匹配这个目录中的所有文件夹,但是当我使用一个变量时,数组不会被填充:

代码语言:javascript
复制
workspace="~/workspace";

myDirectories=(${workspace}/project-*/);

如果我手动传递它,它会在没有问题的情况下选择目录。

代码语言:javascript
复制
myDirectories=(~/workspace/project-*/);

我知道这是一个简单的东西,我错过了,但它是困扰我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-24 20:11:53

您在workspace变量声明中使用了以下引号:

代码语言:javascript
复制
workspace="~/workspace"

因此,~不会作为主目录展开,而是按字面处理。

您可以:

  • 保留~外部引号(请注意,在这种情况下,引号不是绝对必要的): 工作区=~/“工作区”
  • 或者使用$HOME代替~: workspace="$HOME"/workspace
  • 或者使用以/开头的绝对路径,例如/home/username/workspace
票数 3
EN

Stack Overflow用户

发布于 2016-09-24 23:39:03

除非没有引用,否则~将无法正常工作(展开到用户主目录)。

作为一个*,也需要不加引号才能扩展。

可以将目录定义为固定字符串(删除前面的~):

代码语言:javascript
复制
workspace="workingdirectory"       # or just workspace=workingdirectory

并将所有扩展留给数组定义(这两种工作):

代码语言:javascript
复制
myDirectories=(       ~/"${workspace}/"project-*/ );
myDirectories=( "${HOME}/${workspace}/"project-*/ );

您可以使用固定目录,如:"/home/user/$workspace/"project-*/,但在这种情况下,您将失去对运行脚本的任何当前用户的适应性,而不会带来任何实际收益。

在定义变量~/时也可以使用workspace,但这也可以将用户修正为运行脚本中的该部分的用户,这可能与执行目录扩展的用户不同。

综上所述,在创建数组时进行扩展似乎是最好的解决方案,以上两种解决方案都运行良好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39680403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档