在 GNU Make 中转义文件名
escape filenames in GNU Make
我的文件名有括号、波浪号等。示例:'Per a què serveixen les equacions de segon grau?.md'
.
我有一个简单的 Makefile:
$ cat Makefile
%.md.html: %.md
echo $<
ls $<
当我 运行 使用这个 makefile 时,我得到这个错误:
$ make Per\ a\ què\ serveixen\ les\ equacions\ de\ segon\ grau\?.md.html
echo Per a què serveixen les equacions de segon grau?.md
Per a què serveixen les equacions de segon grau?.md
ls Per a què serveixen les equacions de segon grau?.md
ls: no s’ha pogut accedir a 'Per': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'a': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'què': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'serveixen': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'les': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'equacions': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'de': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'segon': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'grau?.md': El fitxer o directori no existeix
make: *** [Makefile:3: Per a què serveixen les equacions de segon grau?.md.html] Error 2
因为文件名本身没有转义。在我的 makefile 中是否有类似这样的说法:ls escape($<)
?也许调用 bash 命令?
对于这个特定的例子,引用自动变量将起作用:
echo "$<"
ls "$<"
但是,此技巧不适用于可选的空变量或包含多个文件的变量。由于 GNU Make 在列表中使用空格作为分隔符的方式,它总体上不适合处理其中包含空格的文件名。
我的文件名有括号、波浪号等。示例:'Per a què serveixen les equacions de segon grau?.md'
.
我有一个简单的 Makefile:
$ cat Makefile
%.md.html: %.md
echo $<
ls $<
当我 运行 使用这个 makefile 时,我得到这个错误:
$ make Per\ a\ què\ serveixen\ les\ equacions\ de\ segon\ grau\?.md.html
echo Per a què serveixen les equacions de segon grau?.md
Per a què serveixen les equacions de segon grau?.md
ls Per a què serveixen les equacions de segon grau?.md
ls: no s’ha pogut accedir a 'Per': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'a': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'què': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'serveixen': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'les': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'equacions': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'de': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'segon': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'grau?.md': El fitxer o directori no existeix
make: *** [Makefile:3: Per a què serveixen les equacions de segon grau?.md.html] Error 2
因为文件名本身没有转义。在我的 makefile 中是否有类似这样的说法:ls escape($<)
?也许调用 bash 命令?
对于这个特定的例子,引用自动变量将起作用:
echo "$<"
ls "$<"
但是,此技巧不适用于可选的空变量或包含多个文件的变量。由于 GNU Make 在列表中使用空格作为分隔符的方式,它总体上不适合处理其中包含空格的文件名。