我有一个基本命令 ( ffmpeg -i input_file out.srt
) 可以将.mkv
视频文件转换为.srt
字幕文件。问题是我必须为每个.mkv
文件手动运行命令。所以我尝试在 Bash 中实现一个 for 循环,但我不断收到错误消息。
#!/bin/bash
# ffmpeg -i input_file out.srt
for i in *.mkv ; do
ffmpeg -i "$i" "$(basename "${i/.mkv)")".str
sleep 30
done
我得到的两个错误是:
./subcon.sh: line 6: unexpected EOF while looking for matching `}'
./subcon.sh: line 9: syntax error: unexpected end of file
我不熟悉 Bash 以了解发生了什么。有谁知道我可以在哪里查找内容或如何解决这个特定问题?
问题:
{
为(
。str
为srt
。basename
语法不正确。更改"$(basename "${i/.mkv)")".str
为"$(basename "$i" .mkv)".srt
。或者使用 Bash 参数扩展而不是basename
.新脚本:
#!/bin/bash
# ffmpeg -i input_file out.srt
for i in *.mkv ; do
ffmpeg -i "$i" "$(basename "$i" .mkv)".srt
sleep 30
done
你可以消除basename
:
#!/bin/bash
# ffmpeg -i input_file out.srt
for i in *.mkv ; do
ffmpeg -i "$i" "${i%.*}.srt"
sleep 30
done
我推荐shellcheck.net来检查你的 Bash 脚本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句