从另一个目录调用脚本时不起作用

时间:2014-07-22 15:00:59

标签: fontforge

不太确定如何正确地说出这一点,但是如果我在其工作的文件目录中运行我的脚本,一切都很好。如果我将脚本指向另一个目录中的文件,则会失败。 我确定这是某种路径扩展或其他什么,但我似乎无法使其发挥作用。

这是fontforge脚本。

#!/usr/bin/fontforge
Open($1)
fname = ($1:r)
Print(fname)
SetTTFName(0x409,2,"")
SetFontNames(fname,fname,fname,"")
Print($fullname)
Print($familyname)
Print(GetTTFName(0x409,2))
Generate($1:r + ".ttf")

和失败的命令:

./fix_font_names ~/Fonts_Other/*

和错误:

SetFontNames: Invalid character in PostScript name token (probably fontname): : /home/akovia/Fonts_Other/Al Fresco Bold
Called from...
./fix_font_names: line 7

如果我将$ 1放在引号或fname中,则错误会发生变化,但如果我从工作目录中调用它,则脚本可以正常工作。

我知道我错过了一些明显的东西,但我无法理解。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我对fontforge一无所知,但语法看起来有些类似于shell,所以我有一个镜头:

变量名中的空格可能有问题吗?如果从目录中运行脚本,那么目录名称只是./,没有空格。但是,如果从其他位置运行它,目录名称为/home/akovia/Fonts_Other/Al Fresco Bold,其中包含空格。尝试引用脚本中所有变量的每次出现?

编辑:只是快速浏览了语言教程,并没有提到任何空格问题。

这是另一个想法:如果你不在目录中,那么你的fname变量不仅包含字体名称(它还包含目录名称)。尝试以某种方式删除额外信息。

相关问题