我的简单努力如下:我的主文件夹中有几个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脚本专家。答案 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