在BASH中获取相对路径
发布时间:2020-12-15 22:06:31 所属栏目:安全 来源:网络整理
导读:我已经搜索了这个,但我想对使用路径没有很大的需求. 所以我正在尝试两个写一个bash脚本来使用tta和cue文件转换我的音乐集. 我的目录结构如下:tta文件的/Volumes/External/Music/Just/Some/Dirs/Album.tta和cue表的/Volumes/External/Cuesheets/Just/Some/Di
我已经搜索了这个,但我想对使用路径没有很大的需求.
所以我正在尝试两个写一个bash脚本来使用tta和cue文件转换我的音乐集. 我的目录结构如下:tta文件的/Volumes/External/Music/Just/Some/Dirs/Album.tta和cue表的/Volumes/External/Cuesheets/Just/Some/Dirs/Album.cue. 我目前的方法是将/ Volumes / External设置为“root_dir”,并将album.tta文件的相对路径设置为$ROOT_DIR / Music(在这种情况下,这将是Just / Some / Dirs / Album.tta),然后添加此结果为$ROOT_DIR / Cuesheets并将后缀从.tta更改为.cue. 我目前的问题是,dirname按原样返回路径,这意味着/ Volumes / External / Music / Just / Some / Dirs不会转换为./Just/Some/Dirs/当我当前文件夹为$ROOT_DIR / Music时给出了绝对路径. 添加://如果有人遇到类似的问题,这是脚本: #!/bin/bash ROOT_DIR=/Volumes/External BASE="$1" if [ ! -f "$BASE" ] then echo "Not a file" exit 1 fi if [ -n "$2" ] then OUTPUT_DIR="$HOME/tmp" else OUTPUT_DIR="$2" fi mkfdir -p "$OUTPUT_DIR" || exit 1 BASE=${BASE#"$ROOT_DIR/Music/"} BASE=${BASE%.*} TTA_FILE="$ROOT_DIR/Music/$BASE.tta" CUE_FILE="$ROOT_DIR/Cuesheets/$BASE.cue" shntool split -f "${CUE_FILE}" -o aiff -t "%n %t" -d "${OUTPUT_DIR}" "${TTA_FILE}" exit 0 解决方法
如果您的Cuesheets目录始终与您的音乐位于同一目录中,您只需从路径中删除root_dir,剩下的就是相对路径.如果你在album_path(album_path = / Volumes / External / Music / Just / Some / Dirs / Album.tta)和你的root_dir设置(root_dir = / Volumes / External)中有你的album.tta的路径,那就做${album_path #$ROOT_DIR}.这会修剪来自album_path前面的root_dir,所以你留下了album_path = Just / Some / Dirs / Album.tta.
有关bash字符串操作的更多信息,请参见bash docs 编辑://将${$album_path#$root_dir}更改为${album_path#$root_dir} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |