目录工作区包含5个项目:
project-1
project-2
project-3
project-4
project-5我想匹配这个目录中的所有文件夹,但是当我使用一个变量时,数组不会被填充:
workspace="~/workspace";
myDirectories=(${workspace}/project-*/);如果我手动传递它,它会在没有问题的情况下选择目录。
myDirectories=(~/workspace/project-*/);我知道这是一个简单的东西,我错过了,但它是困扰我!
发布于 2016-09-24 20:11:53
您在workspace变量声明中使用了以下引号:
workspace="~/workspace"因此,~不会作为主目录展开,而是按字面处理。
您可以:
~外部引号(请注意,在这种情况下,引号不是绝对必要的):
工作区=~/“工作区”$HOME代替~:
workspace="$HOME"/workspace/开头的绝对路径,例如/home/username/workspace发布于 2016-09-24 23:39:03
除非没有引用,否则~将无法正常工作(展开到用户主目录)。
作为一个*,也需要不加引号才能扩展。
可以将目录定义为固定字符串(删除前面的~):
workspace="workingdirectory" # or just workspace=workingdirectory并将所有扩展留给数组定义(这两种工作):
myDirectories=( ~/"${workspace}/"project-*/ );
myDirectories=( "${HOME}/${workspace}/"project-*/ );您可以使用固定目录,如:"/home/user/$workspace/"project-*/,但在这种情况下,您将失去对运行脚本的任何当前用户的适应性,而不会带来任何实际收益。
在定义变量~/时也可以使用workspace,但这也可以将用户修正为运行脚本中的该部分的用户,这可能与执行目录扩展的用户不同。
综上所述,在创建数组时进行扩展似乎是最好的解决方案,以上两种解决方案都运行良好。
https://stackoverflow.com/questions/39680403
复制相似问题