我有一个 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 的影响,这是我们不希望的。