我想创建一个小的 shell 脚本,它会告诉我视频的持续时间,视频的文件名作为参数传递给它。它会是这样的:
$ 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 . . .
将文件名中的空格更改为“\”字符对(不带引号)。回声... | sed ...部分有效,但 mediainfo barfs
和
echo "$1" | tr ' ' '\000' | xargs -0 mediainfo . . .
将空格更改为空值并让 xargs 调用文件名中使用空值而不是空格的 mediainfo。
到目前为止我还没有找到解决方案。 (我实际上使用 zsh,而不是 bash。)非常感谢所有帮助。 Tnx。
答案1
如果您希望脚本的参数 ( $1
) 最终作为 mediainfo 的参数,那么只需将其放在那里即可:
# ...
mediainfo "$1" | grep Duration | sort -u
# ...
这适用于脚本的单个参数。更灵活的是,您可以循环遍历脚本的所有参数,并一次将它们提供给 mediainfo:
for file in "$@"
do
mediainfo "$file" # ...
done