加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在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}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读