使用缩小的cat命令“cat {#firstNumber ..#secondNumber} .mp3> total.mp3”来合并bash脚本中的mp3文件

时间:2016-09-29 21:23:29

标签: bash concatenation mp3 cat

我的简单努力如下:我的主文件夹中有几个mp3文件,假设是0.mp3,1.mp3,2.mp3,3 .mp3。我想使用bash脚本,让我们说“merge.sh”将这些文件合并到一个mp3文件中,使用cat命令cat {0..3} .mp3>的缩小形式。 total.mp3,但这两个数字应作为命令行参数给出,即

bash merge.sh 0 3

不幸的是,既没有写

cat {$ 1 .. $ 2} .mp3> total.mp3

,也不

cat {“$ 1”..“$ 2”}。mp3> total.mp3

的工作原理。在这两种情况下,shell都会响应

“cat:{0..4} .mp3:没有这样的文件或目录”

如果我在脚本中明确地输入了这些数字,即写

cat {0..4} .mp3> total.mp3,

然后脚本执行得很好。但为什么我不能通过命令行参数传递这些数字?我在这里缺少什么?

提前致谢!

P.S:我不是bash脚本专家。

1 个答案:

答案 0 :(得分:0)

使用for循环填充数组,然后使用数组。

for ((i=$1; i <= $2; i++)); do
  arr+=($i.mp3)
done

cat "${arr[@]}" > total.mp3

事实上,你可以省去阵列。效率稍低,但对于合理数量的文件,它应该不会引人注意。

for ((i=$1; i<=$2; i++)); do
  cat "$i.mp3"
done > total.mp3