Makefile中如何使用echo输出$符号

赶在月底发一篇,因为大佬讲了,普通人要想有所作为(咱不说是逆袭,因为这个标题立的有点大了),就得持续输出,因为不是说你学习了就成为自己的了,是否内化于心,也就是消化吸收了,关键还是看能不能输出。

输出是一个发挥主观能动性的过程,只有在输出的过程你才会发现自己是文思如泉涌还是挤不出牙膏的状态。我们每天刷大量的短视频,但是晚上当你躺在床上的时候,回想一下自己收获了什么,就会发现大脑空空。我们学习的大量知识,不拿来实际使用,也很快就会遗忘。所以无论是做笔记输出,还是对自己吸收的东西进行二次加工,再提炼再升华后输出,都是巩固所学,提升自己能力的捷径。

要问这两年什么技术最火,莫过于人工智能了。从各种期刊对论文的要求,自媒体的宣传,新上架的各种书籍都可以感受到这一点。

博主本人最近也开始大量借助AI。比起搜索引擎,询问AI,答案往往更直接,更契合题目,效率提升也是杠杠的。但是,我发现AI有一些缺点,简单的问题答案都比较准确,但是一些复杂的或者有点偏门的问题,AI的回答要么含糊其辞,要么就是持续错误,反而可能误事,这两天就遇到一个这样的例子,记录下来,作为这个月的输出。

在基于yocto构建启机脚本时,发现判断前一条命令返回值的$?始终无法输出。下面是构建脚本用到的代码:

echo "echo \"if [ $? -ne 0 ]; then\" >>  $$(TARGET_DIR)/etc/init.d/rcS" >> $$(FAKEROOT_SCRIPT)

最开始意识到$是个特殊字符,需要转义。但是,无论使用引号,反斜杠/还是其他方式,最终输出要么是空,要么是0,要么只有?反复询问AI,给的答案都是反斜杠。在这种情况下,还是选择了搜索引擎,然后从很多篇博文中进行总结分析,发现,$$可以在makefile中表示$,但是上面有两层echo,所以测试发现,就需要四个$,进一步的,在最后执行echo的时候,$需要使用\反斜杠来转义,因为这时候是在shell中执行了。而反斜杠在makefile里还需要一个反斜杠来转义,所以最终的代码变成了下面这个样子:

echo "echo \"if [ \\$$$$""? -ne 0 ]; then\" >>  $$(TARGET_DIR)/etc/init.d/rcS" >> $$(FAKEROOT_SCRIPT)

简单总结一下,makefile中可以使用两个$来表示$本身,而shell中需要使用反斜杠/来转义$符号。

最后,AI确实很厉害,但是关键时刻还是需要人的主动思考。这也许就是AI最欠缺的。

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙赤子

你的小小鼓励助我翻山越岭

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值