'for 'file' in'から取得した変数 'file'を使用して他のスクリプトに渡すことは失敗します。

'for 'file' in'から取得した変数 'file'を使用して他のスクリプトに渡すことは失敗します。

.mkv現在のフォルダ内のすべてのファイルを検索し、mediainfoI want toを使用してheightそのメタデータを変数に入れようとすると失敗するようです。

このスニペット:

height=$(mediainfo "input.mkv" | grep -E 'Height'); echo $height; height=${height//[!0-9]/}; echo $height;

素晴らしい作品。ファイル名を手動で挿入すると、目的の結果が出力されます。

# height=$(mediainfo 'input.mkv' | grep -E 'Height'); echo $height; height=${height//[!0-9]/}; echo $height;
Height : 720 pixels
720

for file inただし、ファイル名を手動で挿入する必要がないように、それを自分のディレクトリに入れようとすると失敗し続けます。

for file in *.{mkv}; do height=$(mediainfo "$file" | grep -E 'Height'); echo $height; height=${height//[!0-9]/}; echo $height; done 

変数の出力は$height空です。

# for file in *.{mkv}; do height=$(mediainfo "$file" | grep -E 'Height'); echo $height; height=${height//[!0-9]/}; echo $height; done
(null)
(null)

"$file"'$file'変更してみましたが、$file何も機能しません。何か抜けたものはありますか?

ベストアンサー1

あなたが書いたもの*.{mkv}ではありません*.mkv。したがって、ループは*.{mkv}存在しない「ファイル」に対してのみ繰り返されます。この場合、出力はmediainfo空です。

echo "$file"確認するには、ループにこのようなものを追加します。

おすすめ記事