我不得不快速查看Makefile,以了解我遇到的一些问题。我碰到过这些问题,我想确保我在这里正确理解了它们的用法。
//Array Declaration
const phones = [{ brand: "Samsung", id: 10 }, { brand: "Apple", id: 20 }];
//correct way
let phone = phones.find(phone => phone.id === 10);
console.log("Correct result: ", phone);
//wrong way
phone = phones.find(phone => {
phone.id === 10;
});
console.log("Wrong result: ", phone);
要清楚,我知道cp $< $@
sed -i -e 's#{{DEPLOY}}#https://example.com/#g' $@
在这里被用来做(全局?)字符串替换,但是bash特殊字符的使用使这可能比应该的更加混乱。
希望您能对上面两行的实际操作进行解释。
答案 0 :(得分:2)
它们是GNU Make automatic variables:
$@
规则目标的文件名。如果目标是存档成员,则“ $ @”是存档文件的名称。在具有多个目标的特征码规则中(请参阅特征码规则简介),“ $ @”是导致运行规则配方的任何目标的名称。
$<
第一个必备条件的名称。如果目标从隐式规则中获取配方,这将是隐式规则添加的第一个先决条件(请参阅隐式规则)。
请参见what targets and prerequisites are。
sed -i -e 's#{{DEPLOY}}#https://example.com/#g' $@
将{{DEPLOY}}
中所有出现的https://example.com/
替换为$@
。
放在一起,是一个更简单,更强大的版本
cp $< $@
sed -i -e 's#{{DEPLOY}}#https://example.com/#g' $@
是:
sed -e 's#{{DEPLOY}}#https://example.com/#g' $< > $@