我正在研究以## ARTIST - TRACK.flac格式獲取flac文件的腳本,並且正確地從文件名和標籤中提取信息。我也有一些手動輸入其他信息的標誌。問題是曲目名稱沒有正確標記。看起來,它停止在第一個白色空間,不管我的引用技術如何,然後拋出一堆其他的東西。您會注意到,在標記之前我會回顯出trackname變量,以確保變量是正確的,但標記仍然是關閉的。感謝您的幫助(和任何其他指針)提前!難以在bash腳本中正確傳遞一個變量
#!/bin/bash
#
# A flac tagging script
#
while getopts :l:y:s:h opt ;
do
case $opt in
l) ALBUM="--set-tag=ALBUM=${OPTARG}" ;;
y) YEAR="--set-tag=YEAR=${OPTARG}";;
s) SOURCE="--set-tag=SOURCE=${OPTARG}" ;;
h) echo >&2 "tags flac files in folder with arguments: -r [artist] -l [album] -y [year] -s [source (cdr, promot, etc)]" ;;
esac
done
shift $((OPTIND-1))
if [ "$1" ]
then
for file
do
if [ -e "$file" ]
then
echo >&2 "Tagging file: "$file""
filename=$(basename "$file")
extension="${filename##*.}"
filename="${filename%.*}"
TRACKNAME="${filename##*- }"
trackartist="${filename% -*}"
TRACKNUMBER="${trackartist% *}"
ARTIST="${trackartist##* }"
echo >&2 "$TRACKNAME"
metaflac \
--set-tag=ARTIST=$ARTIST\
--set-tag=TITLE=$TRACKNAME \
--set-tag=TRACKNUMBER="$TRACKNUMBER" "$ALBUM" "$YEAR" "$SOURCE"\
"$file"
else
echo >&2 "No such file: "$1""
exit 1
fi
done
else
echo >&2 "Usage: "$(basename "$0")" INPUTFILE [...]"
exit 1
fi
我不知道我理解的問題。它停在哪個空間? – Barmar 2014-11-08 22:32:17
'$ ARTIST'或'$ TRACKNAME'是否可以包含空格?然後你需要在'--set-tag ='參數中引用它們。 – Barmar 2014-11-08 22:33:26