gpt4 book ai didi

狂欢|在转义空格时将参数分配给变量

转载 作者:行者123 更新时间:2023-12-04 23:05:01 28 4
gpt4 key购买 nike

这是一个 bash 脚本,它打印视频的帧率,它所采用的参数可能包含空格。这个参数也将在脚本内的命令中使用。

#!/bin/bash
inputVid="$*"

#checking if $inputVid has full path
echo $inputVid

frames=`ffmpeg -i $inputVid 2>&1 | sed -n "s/.*, \(.*\) fp.*/\1/p"`
echo $frames

当我执行
$./frameRate.sh ../Downloads/FlareGet/Videos/Why\ .mp4 

输出是:
../Downloads/FlareGet/Videos/Why .mp4

所以文件名被正确传递,但空格没有被转义,因此 ffmpeg 没有输出

有什么办法可以解决这个问题吗?

最佳答案

如果你的命令只有一个参数,使用 $1 .您需要做的就是正确引用原始参数和参数 $1在你的脚本里面。

# Equivalent invocations
$ ./frameRate.sh ../Downloads/FlareGet/Videos/Why\ .mp4
$ ./frameRate.sh ../Downloads/FlareGet/Videos/"Why .mp4"
$ ./frameRate.sh "../Downloads/FlareGet/Videos/Why .mp4"

脚本将是
inputVid="$1"
ffmpeg -i "$inputVid" 2>&1 | sed -n "s/.*, \(.*\) fp.*/\1/p"

或者干脆
ffmpeg -i "$1" 2>&1 | sed -n "s/.*, \(.*\) fp.*/\1/p"

如果这不起作用,那么您的 Python 脚本没有正确传递参数,并且您实际上无法做任何事情来适应它。

关于狂欢|在转义空格时将参数分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42630985/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com