mediainfoを呼び出すときにスペースを含むスクリプトパラメータ

mediainfoを呼び出すときにスペースを含むスクリプトパラメータ

ビデオの長さを知らせる小さなシェルスクリプトを作成し、ビデオのファイル名をパラメータとして渡したいと思います。次のようになります。

$ script_name "file name with spaces.webm" # or any other media file extension

スクリプトファイルは次のとおりです。

#/bin/bash
SECRET_SAUCE_USING_$1 | mediainfo | grep Duration | sort -u
# maybe SECRET_SAUCE_USING_$1 | xargs -0 mediainfo . . .

コマンドラインではこれが機能し、スクリプトで実行したいことは次のとおりです。

$ mediainfo file\ name\ with\ spaces.webm | grep Duration | sort -u

私は次のようなものを試しました。

echo "$1" | sed 's/ /\\ /g' # piped to mediainfo . . .

ファイル名のスペースを「\」文字ペア(引用符を除く)に変更します。 echo ... | sed...部分的には機能しますが、mediainfo barfs

そして

echo "$1" | tr ' ' '\000' | xargs -0 mediainfo . . .

空白をnullに変更し、xargsが空白ではなくファイル名にnullを使用してmediainfoを呼び出すようにします。

これまで私は解決策を見つけることができませんでした。 (私は実際にbashではなくzshを使用しています。)どんな助けにも感謝します。 Tnx。

答え1

スクリプトのパラメータ($1)がmediainfoのパラメータで終わるようにするには、そのパラメータをその場所に入力します。

# ...
mediainfo "$1" | grep Duration | sort -u
# ...

これはスクリプトの単一パラメータに対して機能します。柔軟性を高めるために、スクリプト内のすべてのパラメータを繰り返して、一度に1つずつmediainfoに提供できます。

for file in "$@"
do
  mediainfo "$file" # ...
done

関連情報