이미이 항목을 검색했지만 경로로 작업하는 데 큰 요구가 없었습니다. 그래서 저는 tta와 cue 파일을 사용하여 음악 컬렉션을 변환하기 위해 bash 스크립트를 작성하려고합니다. 내 디렉토리 구조는 tta 파일의 경우 /Volumes/External/Music/Just/Some/Dirs/Album.tta이고 큐 시트의 경우 /Volumes/External/Cuesheets/Just/Some/Dirs/Album.cue와 같습니다.BASH에서 상대 경로 가져 오기
현재 "root_dir"로/Volumes/External를 설정하고 album.tta 파일의 상대 경로를 $ ROOT_DIR/Music으로 가져옵니다 (이 경우 Just/Some/Dirs/Album.tta가됩니다) ,이 결과를 $ ROOT_DIR/Cuesheets에 추가하고 접미사를 .tta에서 .cue로 변경하십시오.
내 현재 문제는 경로가 그대로 반환되므로 현재 폴더가 $ 일 때/Volumes/External/Music/Just/Some/Dirs가 ./Just/Some/Dirs/으로 변환되지 않는다는 것을 의미합니다. ROOT_DIR/Music과 절대 경로가 주어졌습니다.
추가 : Cuesheets 디렉토리가 당신의 음악과 같은 디렉토리에 항상있는 경우
#!/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
여기에 어떤 질문이 있는지 명확하지 않습니다. – drysdam
질문은 상대 경로를 절대 경로에서 벗어나는 방법입니다. 제 경우에는 $ BASE와 그것을 만드는 법이 관련 부분이었습니다. 내가 나의 의도를 말한 이유는 무엇이라도하는 더 좋은 방법이 항상 있다고 믿기 때문에 나의 접근 방식이 똑똑하다는 것이 확실하지 않다는 것이 었습니다. –