sysabod 2016-01-02 08:27 采纳率: 0%
浏览 2012
已结题

请教busybox makefile中的一行代码

大家好,

CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
else if [ -x /bin/bash ]; then echo /bin/bash; \
else echo sh; fi ; fi)

这句话的目的是为了打印CONFIG_SHELL这个变量的值,可是第一个if中为什么要写成"$$BASH",写成“$BASH”不可以吗?

  • 写回答

3条回答 默认 最新

  • hchen90 2016-01-02 22:32
    关注

    在SHELL脚本中,符号$具有特殊意义,类似C语言的转义符号(或者就是转义符号),两个$(即$$)表示一个$,所以又叫去引用。这样以来,$$BASH在解释的时候,引号中的那部分实际上变成$BASH。

    即:$(shell ...) 中省略部分是一个单独部分,把它先抹掉。这时,要保证省略部分保留原意,即:$BASH在解释时要被解释成$BASH这个字符串(而不是/bin/sh或其他),再递交给shell,所以
    必需要用$去引用,把$表示出来。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器