音楽ファイルを処理する bash スクリプトを作成しようとしています。これまでのスクリプトは次のとおりです。
#!/bin/bash
SAVEIFS=$IFS
IFS=printf"\n\0"
find `pwd` -iname "*.mp3" -o -iname "*.flac" | while read f
do
echo "$f"
$arr=($(f))
exiftool "${arr[@]}"
done
IFS=$SAVEIFS
これは次の場合に失敗します。
[johnd:/tmp/tunes] 2 $ ./test.sh
./test.sh: line 9: syntax error near unexpected token `$(f)'
./test.sh: line 9: ` $arr=($(f))'
[johnd:/tmp/tunes] 2 $
私は多くの異なる呪文を試しましたが、どれもうまくいきませんでした。肝心なのは、コマンドを呼び出そうとしているexiftool
ことです。そのコマンドのパラメーターの 1 つは、スペースを含む可能性のあるファイル名です。$f
上記では、ファイル名を配列に割り当ててその配列を に渡そうとしていますが、配列exiftool
の構築に問題があります。
当面の質問は、この配列をどのように構築するのですか? しかし、より深い問題は、bash スクリプト内から、スペースを含む可能性のあるパラメーターを使用して外部コマンドを呼び出すにはどうすればよいかということです。