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

请教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 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序