-2

変換する前にMP3ファイルからアートワークを抽出するために使用するbashスクリプトがあります。

#!/bin/bash

MUSIC_FILE=$1
IMAGE_FILE=""
TIMESTAMP=$2

if [ -z "$MUSIC_FILE" ] ; then
  exit 2;
fi

if [ -z $TIMESTAMP ] ; then
  TIMESTAMP=$(date +%s)
fi 

IMAGE_FILE=`/usr/bin/eyeD3 --write-images=. "$MUSIC_FILE" 2>&1 | grep Writing  | sed -e 's/Writing //g' -e 's/\.\.\.//g' | tr ' ' '_'`

if [ -z $IMAGE_FILE ] ; then
  exit 3
fi

if [ -e $IMAGE_FILE ] ; then
  /usr/bin/convert $IMAGE_FILE $TIMESTAMP.png
  exit 0
else 
  exit 4
fi

アートワークファイルは適切に抽出されており、ls出力で確認できます。ファイル名の取得に使用される変数は正しいですが(見出し/末尾のスペースなどはありません)、スクリプト内でも変換も追加のlsもそれを検出しません(そのようなファイル、又はディレクトリはありません)...

それは本当に私を狂わせます...

追加情報:-xフラグを指定してスクリプトを起動すると、ファイル名のすべての表現が黄色になり、理由がわかりません...

ご協力いただきありがとうございます !

ジェレミー

4

1 に答える 1

0

コマンドの出力をフィルタリングしてファイル名を取得しようとする代わりに、なぜそうしなかったのですか?

#!/bin/bash

MUSIC_FILE="$1"
[ -f "$MUSIC_FILE" ] || exit 2

TIMESTAMP=${2:-$(date +%s)}

mydir=$(mktemp -d)
/usr/bin/eyeD3 --write-images=$mydir "$MUSIC_FILE" >/dev/null 2>&1
filename=($(/bin/ls -1 $mydir))

[ -f "$mydir/$filename" ] &&
    convert $mydir/$filename" $TIMESTAMP.png

rm -fR $mydir

テストされていませんが、動作する可能性があります...(約;-)

于 2012-12-15T15:02:34.633 に答える