gpt4 book ai didi

makefile - 制作 : how to replace character within a make variable?

转载 作者:行者123 更新时间:2023-12-05 01:47:31 26 4
gpt4 key购买 nike

我有一个这样的变量:

export ITEM={countryname}

这可以是:

   "Albania", 
"United States" // with space
"Fs. Artic Land" // dot
"Korea (Rep. Of)" // braket
"Cote d'Ivoir" // '

这个变量 $(ITEM) 被传递给其他命令,一些需要的就是它(好吧,我会使用 $(ITEM)),一些必须有字符例如,替换为 mkdir -p ../folder/{countryname} :

   "Albania"          // => Albania
"United States" // => United_States
"Fs. Artic Land" // => Fs\._Artic_Land
"Korea (Rep. Of)" // => Korea_\(Rep\._Of\)
"Cote d'Ivoire" // => Cote_d\'Ivoire

所以我需要一个新的make变量这样

export ITEM={countryname}
export escaped_ITEM=$(ITEM).processed_to_be_fine

我应该如何在我的 makefile 中执行此字符替换?(为了简单起见并且不必执行外部脚本)。我在考虑使用一些 transclude tr 之类的东西。

注意:在 Ubuntu 上工作。

最佳答案

您可以使用 GNU Make 中的 subst 函数来执行替换。

escaped_ITEM := $(subst $e ,_,$(ITEM))

(其中 $e 是未定义或空变量;感谢@EtanReisner 指出)。

不过,对于每个单独的替换,您都需要一个 subst

不过,如果可能的话,我建议不要这样做——对文件名使用单一的、机器可读的标记,并仅在最后一步将它们映射为人类可读的。这在您的 makefile 中也更容易:

human_readable_us=United States
human_readable_kr=Korea (Rep. of)
human_readable_ci=Côte d'Ivoire
human_readable_tf=FS. Antarctic Lands

stuff:
echo "$(human_readable_$(ITEM))"

关于makefile - 制作 : how to replace character within a make variable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25555686/

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