我有这些变量:
$ reel = 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"
但它会出现此错误:/ Volume / RAID / Lights / LightsFootage / Day01 / B_Camera / XF_1 / CONTENTS / CLIPS001 / AA0002 / AA000201.MXF:第5行:继续:仅在for',
中有意义,或“直到'循环
注意:为简单起见,我在此处缩短了目录名称。
答案 0 :(得分:1)
ffmpeg -i "${1}" "${output_dir}/${reel}_${base}.mp4"
答案 1 :(得分: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
没有这类问题,因为变量名称不能有点。