shell 脚本
shell脚本(入门)
命令解析器。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
shell的参数
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
[^1]: [mermaid语法说明](https://mermaidjs.github.io/)
shell的自带常用命令和函数
1. basename 是去除目录后剩下的名字
example:shell>temp=/home/temp/1.test
shell>base=`basename $temp`
shell>echo $base
结果为:1.test
2. dirname 是取目录
example:shell>temp=/home/temp/1.test
shell>dir=`dirname $temp`
shell>echo $dir
结果为:/home/temp
3.grep命令
1.grep [选项] ”模式“ [文件]
2.grep -E 为egrep
3.grep -F 为fgrep
常用选项:
-E :开启扩展(Extend)的正则表达式。
-i :忽略大小写(ignore case)。
-v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。
-n :显示行号
-w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker
-c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。
-o :只显示被模式匹配到的字符串。
--color :将匹配到的内容以颜色高亮显示。
-A n:显示匹配到的字符串所在的行及其后n行,after
-B n:显示匹配到的字符串所在的行及其前n行,before
-C n:显示匹配到的字符串所在的行及其前后各n行,context
模式部分:
1、直接输入要匹配的字符串,这个可以用fgrep(fast grep)代替来提高查找速度,比如我要匹配一下hello.c文件中printf的个数:grep -c "printf" hello.c
2、使用基本正则表达式
shell中的符号解释
1. 单引号 : 单引号内忽略所有特殊字符
2. 双引号 :双引号内忽略除了 \ , $ , `以外的所有字符
3. 反引号( ` ):在脚本中插入在反引号内函数的执行结果
3. 反斜杠 : 反斜杠一般用作转义字符。
.执行和sh执行的区别
1.点执行需要配置权限
2.sh执行不需要
循环与分支
注意空格分开
分支 if [判断语句] then fi
循环 for[循环判断] do done
