我很抱歉,如果这太简单了,或者之前已经被覆盖了,但是我希望这里有人能够帮忙。 我不知道如何扩展path名中的*通配符,除非它后面跟着一个空格。 例如,
echo $path* $dir
产量
/Data0001 /subfolder
这是我想要的,但没有空间。 如果我试图拿出空间,
echo $path*$dir
我明白了
/Data*/subfolder
任何提示如何让*扩展没有空白?
谢谢。
将variables名放在大括号中,例如:
echo ${path}*${dir}
它在整个单词上进行模式匹配,而不仅仅是${path}*
部分 – 所以如果$ path是“/”,$ dir是“/ subdirname”,它会查找与/*/subdirname
匹配,在包含名为subdirname的子目录的/中查找目录。 如果您希望它find不包含/ subdirname的目录,则必须将其保留在模式外,并在稍后添加。 下面是一个将匹配存储在数组中的示例,然后添加子目录:
path="/" dir="/subdirname" matchedDirs=("$path"*) echo "${matchedDirs[@]/%/$dir}"
如果最后的结构很难做出来, [@]
部分意味着“数组中的所有元素,每个元素都被视为一个单独的词”, /%/$dir
意思是“用每个元素replace$ dir “(即追加$ dir到每个数组元素)。
将其更改为
dir=/Data sub=subfolder echo $dir*/$sub
。
dir=/Data* sub=subfolder echo $dir/$sub
也会工作