在BASH中扩展数组

3

我有一个数组:

allChapters=('1' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12' '13' '14' 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I')

我需要运行一个需要指定参数的命令,例如:

prince index.html 1.html 2.html 3.html 4.html 5.html 6.html 7.html 8.html 9.html 10.html 11.html 12.html 13.html 14.html A.html B.html C.html D.html E.html F.html G.html H.html I.html  -o doc.pdf

有没有一种方法可以扩展数组而不必手动输入所有内容,这样我就可以向数组中添加内容而不必修改命令?

类似于:

prince ${allChapters[*]}.html -o doc.pdf
1个回答

8

这是有效的:

prince "${allChapters[@]/%/.html}" -o doc.pdf

这将在每个条目的末尾用所需的扩展名替换空字符串。


太棒了。谢谢你!我应该在哪里查找这个信息?谷歌搜索并没有提供有用的参考文档。 - GameDeveloper
1
前往源代码:GNU bash 手册。在这种情况下,答案在 参数扩展 部分中。向下滚动以阅读 ${parameter/pattern/string} 的相关内容,您会发现:“如果 parameter 是一个带有 '@' 或 '*' 下标的数组变量,则替换操作依次应用于数组的每个成员,并且扩展是结果列表。” - glenn jackman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接