shell脚本中如何拆分路径获取目录

How to split the path to get the directory in shell script

我正在尝试拆分文件路径以获取目录名称以检查目录是否存在于新位置或不使用 shell 脚本。

我尝试使用

cf=src/classes/CarExperience.cls
echo ${cf%/*} 
echo ${cf##/*/}
echo ${cf#/*/*/}
echo ${cf%/*}

echo $(dirname "$cf")

但是其中 none 给出了我想要的结果

期望的结果是在 src 之后获取部分并检查该内部目录是否存在。 cf=src/classes/CarExperience.cls directory_name=类

感谢这方面的任何帮助。

像这样,使用参数扩展,尝试这样做:

cf=src/classes/CarExperience.cls
cf=${cf#src/*} # become 'classes/CarExperience.cls'
echo ${cf%/*}  # become 'classes'

输出

classes

你可以这样做:

full_dir=$(dirname "$cf")
last_dir=$(basename "$full_dir")

或一次拍摄

last_dir=$(basename "$(dirname "$cf")")

是的,你想要所有这些引号。

使用shell参数展开:

full_dir=${cf%/*}
last_dir=${full_dir##*/}

那个必须分两步完成。