一、shell与makefile中符号的使用
- 对比
shell | makefile | |
---|---|---|
# | 在行首时,为注释。(多行注释可用 “ :<<! 换行! ”) | 在行首时,为注释 |
% | 一般在${}用作字符串处理 | 表示任意字符,如%.C表示所有的C文件 |
$@ | 传递给脚本或函数的所有参数 | 表示规则中的目标文件集 |
$* | 传递给脚本或函数的所有参数,与$@不同的是,当被“”引住时,所有参数成为不可分的整体 | 表示目标模式中 % 及其之前的部分,即去除了后缀的那一部分 |
$? | 上个命令的退出状态,或函数的返回值 | 所有比目标新的依赖目标的集合。以空格分隔 |
$$ | 当前 Shell 进程 ID | $$var将表示对var先执行一次扩展,使用shell里的var变量 |
$^ | 所有的依赖目标的集合。以空格分隔。如果依赖目标中重复的会去除重复的 | |
$+ | 这个变量很像 $^ ,也是所有依赖目标的集合。只是它不去除重复的依赖目标 | |
$< | 依赖目标中的第一个目标名字 | |
$% | 仅当目标是函数库文件时,表示规则中的目标成员名,否则为空 | |
$n | 当n=0时,表示当前脚本的文件名。当n>0时,表示第几个参数 | |
$# | 传递给脚本或函数的参数个数 | |
$- | 显示Shell使用的当前选项,与set命令功能相同。 | |
$! | Shell最后运行的后台Process的PID |
- 在shell中,#,*一般都表示“全部”的意思,以下都是获取array_name数组长度。
length=${#array_name[@]}
length=${#array_name[*]}
二、链接