gpt4 book ai didi

variables - Makefile 和 $$ 的使用

转载 作者:行者123 更新时间:2023-12-04 03:11:52 24 4
gpt4 key购买 nike

所以我有一个 Makefile,其中包含我试图理解的以下代码:

for file_exe in `find . -name "zip_exe-*"`; do \
./$${file_exe} -d $(UNZIP_PATH)/lib; \
done

据我了解,这段代码将尝试找到一些可执行的 zip 并将这些 zip 文件解压缩到某个位置。但令我困惑的是如何 $${file_exe}工作中。为什么是双 $$需要吗?我想这与某些 bash 命令从 makefile 运行的事实有关,但我无法向自己解释为什么 $$需要一个简单的 $不起作用,因为该命令无论如何都在运行子 shell。

最佳答案

make需要区分你是否想要$用作引入变量引用,例如 ${FOOBAR}或者作为传递给 shell 的普通 $ 。 make specification (Section Macros) 说要做后者,你必须使用 $$由单个 $ 代替并传递给shell。实际上,您的代码段读取为

for file_exe in `find . -name "zip_exe-*"`; do \
./${file_exe} -d some/unzip/path/lib; \
done

到 shell 。

样式说明:迭代由反引号创建的文件列表被认为是不好的样式,因为它可能会溢出 ARG_MAX 限制。最好一一读取文件名
find . -name "zip_exe-*" | \
while read -r file_exe; do \
./${file_exe} -d some/unzip/path/lib; \
done

关于variables - Makefile 和 $$ 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19589957/

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