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
再次感谢您的快速回复!
我正在使用 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
再次感谢您的快速回复!