Makefile编写
创始人
2024-05-26 10:29:00

$ 的用法

参考链接

用法一:$0, $?等表示各种参数

用法二:${}, 获取变量的值

最常见的应该是:echo $PATH了,表示打印该shell中存在的环境变量。 ${var_name} 跟 $var_name差不多,但是用 ${ }会比较精确的界定变量名称的范围。

用法三:$()

在bash中,$( )与``(反引号)都是用来作命令替换的,执行括号或者反引号中的命令, 然后返回结果。比如:

echo "present dir is $(pwd)"

输出如下:

/> echo "present dir is $(pwd) ."
present dir is / .

echo 和 @echo

@这个符串通常用在“规则”行中,表示不显示命令本身,而只显示它的结果。

  • echo:会在shell中显示echo这条命令和这条命令的输出结果;
  • @echo:不会在shell中显示echo这条命令,但是会显示命令的输出结果。

$ @、$ < 等变量的含义

参考链接

变量含义
$#传给脚本的参数个数
$0脚本本身的名字
$1传递给该shell脚本的第一个参数
$2传递给该shell脚本的第二个参数
$@传给脚本的所有参数的列表,代表目标文件(target)
$*以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过 9 个
$$脚本运行的当前进程ID号
$?显示最后命令的退出状态, 0 表示没有错误,其他表示有错误
$^代表所有的依赖文件(components)
$<代表第一个依赖文件(components中最左边的那个)

call 函数

call函数是唯一一个可以用来创建新的参数化的函数。你可以写一个非常复杂的表达式,这个表达式中,你可以定义许多参数,然后你可以用call函数来向这个表达式传递参数。其语法是:

$(call ; , ; , ; , ; ...)

当 make 执行这个函数时,< expression > ;参数中的变量,如$ (1),$ (2),$ (3)等,会被参数< param1 >;, < param2 >;,< param3 >; 依次取代。而;的返回值就是 call函数的返回值。例如:

reverse = $(1) $(2)
foo = $(call reverse,a,b)

那么,foo的值就是“a b”。当然,参数的次序是可以自定义的,不一定是顺序的,如:

reverse = $(2) $(1)
foo = $(call reverse,a,b)

此时的foo的值就是“b a”。

相关内容

热门资讯

demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...