zoukankan      html  css  js  c++  java
  • linux赋值操作符比较

    1. 递归展开变量(=):类似c中define,只是简单的替换;用=或define关键字都可以定义这种变量,如果变量的定义引用了其它的变量,那么引用会一直展开下去,直到找到被引用的变量的最新的定义,并以此作为改变量的值返回。
    eg:
    var = I love
    variable = linux
    var += $(variable)
    variable = magic
    echo $(var)
    -----> I love magic;
    2.简单扩展变量(:=):用这种方式定义的变量,会在变量的定义点,按照被引用的变量的当前值进行展开。
    m := mm
    x := $(m)
    y := $(x) bar
    x := later
    echo $(x) $(y)
    $x---> later
    $y---> mm bar(只管变量定义时的值,若将y:=...==> y=...,则会变成later bar)
    3.可以通过+=为已定义的变量添加新的值
    当变量从前没有被定义过, +=和=是一样的,它定义一个递归展开的变量;
    当变量已经有定义的时候,+=只是简单的进行字符的添加工作。
    如果起初你用:=定义变量,那么+=只是利用变量的当前值进行添加
    如果起初用=定义变量,+=的行为就变得有些古怪,它并不会在使用+=的地方马上进行变量展开,而是会把展开工作推后,直到它找到最后变量的定义,这和=定义变量的行为是类似的
    4.?= 赋默认值,如果没有初始化该变量,就给它赋上默认值。如:
    ARCH=arm
    ARCH ?= i386
    all:
    @echo $(ARCH)
    输出:
    arm

    ARCH=
    ARCH ?= i386
    all:
    @echo $(ARCH)
    输出:i386

  • 相关阅读:
    datatime模块
    快速幂
    | 与|| ,& 与&&
    sql----order by
    pandas iterrows()
    黄包车比赛 python学习
    右键git-bash不能使用
    17flask分页
    16flask错误处理
    15跨站请求伪造
  • 原文地址:https://www.cnblogs.com/toven/p/2674048.html
Copyright © 2011-2022 走看看