You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mkvmerge处理MKV文件的Bash脚本多用户输入变量失效问题

问题原因
  • 核心问题为变量赋值与调用错位:接收用户输入时,将音频轨道编号存入了subvar变量、字幕轨道编号存入了audiovar变量,后续调用mkvmerge时,音频参数-a错误使用了存储字幕轨道编号的audiovar,字幕参数-s错误使用了存储音频轨道编号的subvar,参数完全不匹配导致轨道过滤逻辑失效。
  • 额外隐患为变量未添加双引号,若用户输入多轨道编号、带空格的内容时,会被Shell解析为多个参数引发未知错误。
修复后代码
#!/bin/bash

read -p 'Audio track to keep: ' audiovar
read -p 'Subtitle track to keep: ' subvar
read -p 'Filename suffix: ' suffixvar

for file in *.mkv; do
    mkvmerge -o "${file%.mkv}.${suffixvar}.mkv" -a "$audiovar" -s "$subvar" "$file"
done
调整说明
  • 修正了输入变量的赋值逻辑,音频轨道编号存入audiovar、字幕轨道编号存入subvar,和后续参数调用完全对应
  • 所有变量外层添加双引号,避免特殊字符、空格、多轨道编号带来的Shell解析异常
  • 修正mkv文件匹配通配符为*.mkv,避免匹配异常
  • 输出文件名的变量拼接统一放入双引号包裹的字符串内,避免拼接错误

内容的提问来源于stack exchange,提问作者PimPolacko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:57:03