如何分割shell脚本中的文件路径?按我的需要

问题描述:

将字符串分割str="directory1/src/main/java"到含有如何分割shell脚本中的文件路径?按我的需要

directory1 
directory1/src 
directory1/src/main 
directory1/src/main/java 

我需要这样做,这样我可以从一个shell脚本(这就是为什么我需要的数组包含的原因中创建必要的文件夹的数组在已提供

+4

看看'-p'选项'mkdir' - 它创造介入的目录自动地...即'mkdir -p directory1/src/main/java' – 2014-10-29 07:31:43

+0

发布这个答案,以便我可以选择这个答案。谢谢。 +1 – 2014-10-29 14:36:48

也许有一个看看-p选项mkdir - 它创建自动的干预目录...

mkdir -p directory1/src/main/java 

正如在评论中指出的格式字符串,可以使用mkdir -p不需要这种分裂,但是,如果你好奇,你可以使用下面的代码:

IFS="/" read -a components <<< "$str" 
for((i=1; i<=${#components[@]}; i++)); do 
    dir=$(IFS="/"; printf "%s" "${components[*]:0:i}") 
    paths+=("$dir") 
done 

这将字符串拆分为其组件目录,然后将该数组的逐渐加长的前缀连接到字符串中。

+0

虽然这不是POSIX兼容的,对吧? – 2014-10-29 13:19:07

+0

对不起,没有。我忘了浏览'shell'标签,而不是'bash'。 – chepner 2014-10-29 13:20:07