目录工作区包含5个项目:
project-1 project-2 project-3 project-4 project-5
我想匹配此目录中的所有文件夹,但是当我使用variables时,数组不会填充:
workspace="~/workspace"; myDirectories=(${workspace}/project-*/);
如果我手动通过它拿起没有问题的目录。
myDirectories=(~/workspace/project-*/);
我知道这是简单的我想念的东西,但它是窃听我!
您在workspace
变量声明中使用了引号,如:
workspace="~/workspace"
所以~
不会被扩展为主目录,而是被直接处理。
您可以:
留~
外引号(请注意,在这种情况下,引号不是必须的):
workspace=~/"workspace"
或者使用$HOME
而不是~
:
workspace="$HOME"/workspace
或者使用以/
eg /home/username/workspace
开头的绝对路径
除非不加引号,否则~
不能正常工作(展开到用户主目录)。
作为一个*
还需要不受限制地扩展。
您可以将该目录定义为固定字符串(删除前导~
):
workspace="workingdirectory" # or just workspace=workingdirectory
并将所有扩展留给数组定义(两个工作):
myDirectories=( ~/"${workspace}/"project-*/ ); myDirectories=( "${HOME}/${workspace}/"project-*/ );
你可以使用固定的目录,比如"/home/user/$workspace/"project-*/
但是在这种情况下,你将失去对任何运行脚本的用户的适应性。
在定义变量workspace
的时候也可以使用~/
,但是也可以将用户修改为运行该脚本部分的用户,这可能与进行目录扩展的用户不一样。
所有考虑到,在创建阵列时扩大似乎是最好的解决方案,并且上述两个解决方案都运行良好。