我想要创建一个小的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 . . .若要将文件名中的空格更改为“\”字符对(没有引号),请执行以下操作。回声..。部分起作用,但不起作用。
和
echo "$1" | tr ' ' '\000' | xargs -0 mediainfo . . .将空格更改为nulls,并使xargs使用文件名中的null调用mediainfo,而不是空格。
到目前为止我还没有找到解决办法。(我实际上使用的是zsh,而不是bash。)所有的帮助都非常感谢。Tnx
发布于 2018-01-29 17:28:15
如果您希望脚本的参数($1)作为mediainfo的参数结束,那么只需将它放在那里:
# ...
mediainfo "$1" | grep Duration | sort -u
# ...它适用于脚本的单个参数。更灵活的是,您可以遍历脚本的所有参数,并将它们一次提供给mediainfo:
for file in "$@"
do
mediainfo "$file" # ...
donehttps://unix.stackexchange.com/questions/420457
复制相似问题