加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读