bash – Makefile`echo -n’不工作
发布时间:2020-12-15 19:41:59 所属栏目:安全 来源:网络整理
导读:我试图让我的Makefile回显文本没有尾随的新行,但我无法。我正在体验OS X上的行为(在Linux上,一切都按预期工作)。 Makefile a: @echo -n "hello"b: @echo -n helloc: @/bin/echo -n "hello" 输出: $make a-n hello$make bhello$make chello$ 换句话说,mak
我试图让我的Makefile回显文本没有尾随的新行,但我无法。我正在体验OS X上的行为(在Linux上,一切都按预期工作)。
Makefile a: @echo -n "hello" b: @echo -n hello c: @/bin/echo -n "hello" 输出: $make a -n hello $make b hello$make c hello$ 换句话说,make a被打破了。究竟发生了什么?是使用内置的回声?显然,双引号的存在会改变行为,但为什么? 更新 由@chepner发现,使用makefile中的/ bin / echo的完整路径可以正确地了解-n标志。
有关报价的事情混淆了。您的代码对我来说是一样的,但以下工作原理如下:
help: @echo -n Shouldn't print a newline 硬编码可执行文件的路径也起作用: help: @/bin/echo -n "Shouldn't print a newline" 在讨论shell内置回声的存在的Mac OS X手册页中,提到sh(1)的回声不支持-n选项,但是无法解释(对我来说)为什么我的第一个替代作品。 确认使用sh默认执行命令。在 SHELL = bash help: @echo -n "Shouldn't print a newline" @echo -n Shouldn't print a newline 两个回声语句的行为相同(不打印换行符)。所以没有这个变量,我们有谣言假装是sh,但评估两行不同。问题1:为什么?问题2:是第二行本机的bash echo还是/ bin / echo,而不是模拟的sh echo? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |