Makefile和shell的区别:echo和@echo

原址:http://blog.chinaunix.net/uid-28728968-id-4457667.html

今天发现一个很基础,但我又确定的知识点,记录如下:

        经常在Makefile的命令段发现@echo “print message”,和echo “print message”。
        网上查了下是说echo加了@,命令会正常执行,但命令本身不回显(默认是显示命令到标准输出);未加@,则echo 后的命令体会执行也会回显。
1、 于是自己写了个shell脚本验证:
        
        执行结果如下:
        
        发现问题:
        A:在shell脚本中@echo的用法不能被解析的。
        B:第二条命令echo “ print message2 in " 命令是被正常执行的,执行结果是显而易见的(即在标准输出上打印print message2 in);
        C:但上面提到的回显是不能体现(并没有打印echo "print message2 in")
        猜测:
        (1)shell本身不能解析@echo;
        (2)shell不存在回显的情况;
2、 继续看在Makefile:
        
        
        
        解决A:在Makefile中@echo是可以被解析的,这就是Makefile与shell的区别之一。
        解决B、C:从打印的echo ”make clean...“和make clean...可以看出,命令回显了,命令被正常执行了。
        继续看打印echo ”print to file1.txt“ >file1.txt而没有打印echo ”print message to file2 “>file2.txt也可以证实命令确实回显了.
        而在cat file1.txt和cat file2.txt时可以证明,命令都被执行了。

        结论:
        (1):@echo不能被shell解析,shell也不存在命令回显;
        (2):@echo能被Makefile解析,@echo和echo都能正常执行命令;@echo会回显命令,echo不回显命令。
        说明:
        (1):上面的shell脚本除了#!/bin/sh外也试过#!/bin/bash来解析,结果一样;

        (2):Makefile默认是回显一般命令的,如cat、cp等(不确定是否所有命令),这些命令前加@后就不会回显,效果和@echo一样。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值