在 ' 之间使用变量

在 ' 之间使用变量

我有一个 bash 脚本,其中一行最初是这样的

convert '%d.jpg[1-300]' combined.pdf

使用从 Imagemagick 进行转换将大量按顺序编号的 jpg 合并到 PDF 中。

我编写了一个基本脚本来接受用户输入的可更改页面数,并尝试在脚本运行时使用 read -p 将 300 交换为用户设置的变量,以实现以下目的:

convert '%d.jpg[1-$pages]' combined.pdf

脚本的其余部分工作正常,但在这一行失败,我不知道为什么。有什么建议么?

我怀疑这与不正确的分隔符有关,但我不知道要寻找正确的东西。

答案1

参数扩展不在单引号内执行。但它是在双引号内执行的,因此:

convert "%d.jpg[1-$pages]" combined.pdf

在任何情况下,您都需要某种形式的引用,因为[在大多数 shell 中作为 glob 运算符是特殊的(fish这是一个值得注意的例外,但在fish(无论如何较旧的版本)中它是%特殊的),并且在所有类似 Bourne 的 shell 中zsh,除了不带引号的参数扩展受 split+glob 的影响,这是我们不希望的。

相关内容