如何在 Shell 脚本中为 "for" 语句使用 2 个变量

How to use 2 variable for "for" statement in Shell Script

我想使用 f 和 v 作为变量。 f *.mkv 和 v *.mp3

for f in *.mkv v in *.mp3; do 
   ffmpeg -i "$f" -i "$v" -vcodec copy merge_"$f"
done

我不知道该怎么做。我还是 bash shell 脚本的新手。

希望有人能帮助我。

如果 *.mp3*.mkv 基本名称相同:

for f in *.mkv; do
    mp3name="${f%.mkv}.mp3"
    ffmpeg -i "$f" -i "$mp3name" -vcodec copy "merge_${f}"
done

如果您正在寻找一种方法来按照您的原始代码预期的方式循环变量,您可以这样做:

f=(*.mkv)
v=(*.mp3)
for((i=0;i<${#f[@]};i++));do
echo "${f[$i]} ${v[$i]}"
done

一般假设是,mkvmp3 的文件数量相同。

或者如果文件具有相同的基本名称,您可以这样做:

for f in *.mkv;do
v="${f/%mkv/mp3}"
echo "$f $v"
done

"${f/%mkv/mp3}"mkv 被替换为 mp3 最后。

有关详细信息,请参阅 Bash Parameter Expansion