如何编写Shell脚本获取当前路径的深度?示例返回值为6
获取当前路径深度的Shell脚本实现
嘿,刚好能帮你解决这个问题!咱们先对齐一下需求:你要的是当前路径执行脚本后返回深度6,意味着你所在的路径应该是类似 /dir1/dir2/dir3/dir4/dir5/dir6 这样的结构(从根目录往下数6层)。下面分两部分讲怎么实现:
一、手动快速获取当前路径深度
如果你只是想临时查看,直接在终端执行这条命令就行:
pwd | sed 's/\/$//' | tr -cd '/' | wc -c
命令解释:
pwd:输出当前所在的绝对路径sed 's/\/$//':移除路径末尾可能存在的斜杠(避免像/dir1/dir2/这种末尾带斜杠的情况导致统计错误)tr -cd '/':只保留路径中的斜杠字符,其他全部删除wc -c:统计保留下来的斜杠数量,这个数量就是路径的深度(比如/dir1/dir2/dir3/dir4/dir5/dir6会得到6个斜杠,直接返回6)
二、编写可复用的Shell脚本
把上面的逻辑封装成脚本,方便随时调用:
- 创建一个名为
path-depth.sh的文件,内容如下:
#!/bin/bash # 获取当前绝对路径并移除末尾斜杠 current_path=$(pwd | sed 's/\/$//') # 计算路径深度 depth_count=$(echo "$current_path" | tr -cd '/' | wc -c) # 输出结果 echo "$depth_count"
- 给脚本添加执行权限:
chmod +x path-depth.sh
- 在目标路径(比如
/dir1/dir2/dir3/dir4/dir5/dir6)下执行脚本:
./path-depth.sh
执行后就会直接输出6,完全符合你的需求。
额外说明
如果你的路径深度定义和这个不一样(比如认为根目录/的深度是0而不是1),只需要把计算深度的那一行改成:
depth_count=$(( $(echo "$current_path" | tr -cd '/' | wc -c) - 1 ))
这样根目录会返回0,/dir1返回1,以此类推。不过按照你的需求要返回6,默认的逻辑就刚好适用啦。
内容的提问来源于stack exchange,提问作者SFbay007
相关产品推荐
相关产品推荐

