1

我有这些变量:

$卷= XF_1

$base = AA000201

$output_dir = 目录

该命令不起作用。它生成一个名为 directory/AA000201.mp4 的文件

ffmpeg -i $1 $output_dir"/$reel_$base.mp4

该命令有效。它会生成一个名为 directory/XF_1_AA000201.mp4 的文件。

ffmpeg -i $1 $output_dir"/"$reel"_"$base".mp4"

但它给出了这个错误:/Volumes/RAID/LIGHTS/RawFootage/Day01/B_Camera/XF_1/CONTENTS/CLIPS001/AA0002/AA000201.MXF:第5行:继续:仅在一段for',时间内有意义'或'直到'循环

注意:为简单起见,我在此处缩短了目录名称。

4

2 回答 2

1
ffmpeg -i "${1}" "${output_dir}/${reel}_${base}.mp4"
于 2013-11-09T23:11:46.620 回答
1

Polbrelkey 给了你答案,但我还是要加上这个。

让我们看看为什么ffmpeg -i $1 $output_dir"/$reel_$base.mp4无法明确解释:

看看这三个变量:

reel="A"
reel_="B"   #Nothing prevents you from ending a variable with an underscore
base="C"

现在,让我们解释ffmpeg -i $1 $output_dir"/$reel_$base.mp4一下:根据你分解字符串的方式,你会得到:

#ffmpeg -i $1 $output_dir"/${reel_}${base}.mp4
ffmpeg -i $1 $output_dir"/BC.mp4    

#ffmpeg -i $1 $output_dir"/${reel}_${base}.mp4
ffmpeg -i $1 $output_dir"/A_C.mp4   

在您的情况下, Bash 实际上是在解释第一个(实际上,他会寻找可能的最长变量名),并且由于reel_=""未分配,因此输出directory/AA000201.mp4. 你没有这些问题,base.mp4因为变量名不能有点。

资料来源:Bash-Hackers 的参数扩展

于 2013-11-09T23:24:23.323 回答