bash 带有 2 个用户输入变量的脚本不工作

bash script with with 2 user input variables not working

我正在使用 bash 脚本通过 mkvmerge.

.mkv 文件中删除音频和字幕轨道

到现在为止,我根据要保留的曲目手动更改了 bash 脚本。

因为这有点愚蠢,我想将用户输入包含到脚本中,指定这些曲目以及文件名后缀。

如果我只使用 1 个用户输入变量来选择字幕轨道,它会起作用:

#!/bin/bash
echo Which subtitle track would you like to keep?
read subsvar
for file in *mkv; do
    mkvmerge -o "${file%.mkv}".lesssubs.mkv -s $subsvar "$file"
done 

但如果我对 3 个变量进行相同的尝试,则会使用其中的 none 个并且排除所有音频和字幕轨道:

#!/bin/bash

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

for file in *mkv; do
    mkvmerge -o "${file%.mkv}".$suffixvar.mkv -a $audiovar -s $subvar "$file"
done 

@Gowiser 非常感谢,“echo mkvmerge”帮助很大,因为没有它我没有看到非常明显的问题。 我搞砸了变量顺序 (subvar <-> audiovar),导致 mkvmerge 失败。正确的脚本应该是:

#!/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 

再次感谢您的快速回复!