当前位置: 技术问答>linux和unix
shell中":="这个赋值符号和"="有啥区别?
来源: 互联网 发布时间:2016-04-25
本文导语: 在读一个别人提供的GNUmakefile,上来就是一句PLATFORM:=$(shell uname),我知道这句的作用是获取机器上装了什么系统,执行uname命令也可以得到Linux这个结果,但是我单独执行PLATFORM:=$(shell uname)却被告知: -bash: shell: comma...
在读一个别人提供的GNUmakefile,上来就是一句PLATFORM:=$(shell uname),我知道这句的作用是获取机器上装了什么系统,执行uname命令也可以得到Linux这个结果,但是我单独执行PLATFORM:=$(shell uname)却被告知:
-bash: shell: command not found
-bash: PLATFORM:=: command not found
谁能给我解释一下:
1.:=这个赋值符号和"="有啥区别?
2.这个语句怎么在我的机器上就不能执行呢?
-bash: shell: command not found
-bash: PLATFORM:=: command not found
谁能给我解释一下:
1.:=这个赋值符号和"="有啥区别?
2.这个语句怎么在我的机器上就不能执行呢?
|
:=赋值会马上生效,=只有用到这个值的时候才会真正的去赋值。
以你的例子来说,如果用:=的话,马上就会调用shell来取系统的类型,如果用=的话,只有真正用到PLATFORM这个值得时候才会去调用uname命令来取系统的类型。
:=是make脚本中的语法,不是shell中的,因此不能在命令行中来运行。
以你的例子来说,如果用:=的话,马上就会调用shell来取系统的类型,如果用=的话,只有真正用到PLATFORM这个值得时候才会去调用uname命令来取系统的类型。
:=是make脚本中的语法,不是shell中的,因此不能在命令行中来运行。
|