$的用法
- $$ shell本身的PID
- $! shell最后运行的后台PID
- $? 最后运行的命令的结束代码
- $- 使用set命令设定的Flag一览
$
* 所有参数列表, 如”$
*” 用 “括起来的情况, 以” 1 2 … $n”的形式输出所有参数$@
所有参数列表, 如”$@” 用”括起来的情况,以”$1
” “$2" ... "$n
“的形式输出所有参数- $# 添加到shell的参数个数
- $0 shell本身的文件名
- $1~#n 添加到shell的各个参数
- makefile中的用法
- $@ 目标集合
- $% 当目标时函数库文件时, 表示其中的目标文件名
- $< 第一个依赖目标,如果依赖目标时多个,逐个表示依赖目标
- $? 比目标新的依赖目标集合
- $^ 所有依赖目标的集合, 会去除重复的依赖目标
- $+ 所有依赖目标的集合, 不会去除重复的依赖目标
- $* 这个是GNU make特有的,其他的make不一定支持
test
- 可以判断表达式, 字符串和整数
- test 命令可以用 [空格 表达式 空格]来替代
- 用法很多,百度一下很多参考
- realpath
- 由相对路径转换为绝对路径
- strip [string]
- 去空格函数
- info 之前不知道这个命令, 不好调试Makefile
- shell中打印信息, 变量或者中间变量
- filter
- 以 pattern 模式过滤 text, 保留符合 pattern的单词,可以有多个模式, 举例
- @echo $(filter %.o %.a, program.c program.o program.z)
- filter-out
- 反过滤函数, 返回不符合 pattern 的字符串, 举例
- @echo $(filter-out %.o %.a, program.c program.a program.o)
- eval
- eval command-line 结果是shell在执行命令之前扫描它两次,如
- pipe=”|”
- eval ls $pipe wc -l
- shell 第一次扫描时,替换出pipe的值|, 接着eval使他再次扫描命令行
- eval echo $$#取得最后一个参数
- 其他高级用法可以百度
- eval command-line 结果是shell在执行命令之前扫描它两次,如
- foreach
- $(foreach [var];, [list];, [text];) 意思时把参数list中的单词逐一取出放到参数var所指定的变量中,然后再执行text所包含的表达式
- word 取单词函数
- $(word [n], [text]) 返回text中的第n个单词
- $(word 2, too bar baz) 返回值为bar
- words 去单词个数
- $(words [text])
- wordlist 取单词函数
- $(wordlist [s],[e],[text]) 从字符串 text中取从s开始到e的单词串 s,e为数字
- $(wordlist 2,3, foo bar baz) 返回值是bar baz
shell 命令总结 --持续更新
最新推荐文章于 2024-09-25 15:20:18 发布