#!/bin/bash
for a in ./*.flac; do
ffmpeg -i "$a" -qscale:a 0 "${a[@]/%flac/mp3}"
done
私は数日前に現在のディレクトリのすべてのFLACファイルをMP3形式に変換できるこのスクリプトを見つけました。
私が理解していないのはここの"${a[@]/%flac/mp3}"
部分です。現在のファイル名の終わりflacをmp3に変更するようです。ところで、[@]
この部分が正確にどんな役割を果たしているのでしょうか?正規表現ですか?
ベストアンサー1
推測できるように、値の${var/%flac/mp3}
終わり"flac"
(ある場合)を$var
に置き換えます"mp3"
。"${var[@]/%flac/mp3}"
同じことをする各${var[@]}
ifの出力要素var
は配列です。
ここではa
配列ではないので削除できます。[@]
(これは以前のプログラマーの試みの遺産だと思います。)