gpt4 book ai didi

使用 djvused 程序的 linux shell 脚本不工作

转载 作者:太空宇宙 更新时间:2023-11-04 09:43:33 24 4
gpt4 key购买 nike

我想编写一个脚本,以递归方式重命名 DJVU 文件的页面。来自 http://djvu.sourceforge.net/doc/man/djvused.html我知道在单个页面上执行此操作的命令(比如调用名称为 6 的包的第 5 页)是

djvused file.djvu -e 'select 5; set-page-title 6; save'

但是当我尝试递归地执行它时遇到了麻烦,即运行脚本

./for.sh

给出
for (( i=12; i<=823; i++ ))
do
djvused file.djvu -e 'select $i; set-page-title $((i-10)); save'
done

我得到的错误是由于程序无法将 $i 理解为一个数字,而不是一个表达式。我认为这与我对 shell 脚本和 djvused 的了解不多有关。

谁能告诉我如何修改它才能使其正常工作?

最佳答案

你应该用双引号正确引用它。使用单引号不允许扩展变量并保持其文字形式。

for (( i=12; i<=823; i++ ))
do
djvused file.djvu -e "select $i; set-page-title $((i-10)); save"
done

如单引号所述:

Enclosing characters in single quotes (‘'’) preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.

而在双引号上:

Enclosing characters in double quotes (‘"’) preserves the literal value of all characters within the quotes, with the exception of ‘$’, ‘’, ‘\’, and, when history expansion is enabled, ‘!’. The characters
‘$’ and ‘
’ retain their special meaning within double quotes

关于使用 djvused 程序的 linux shell 脚本不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18899062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com