- 脚本解释器
shell的每个脚本的开头都需要使用#!,用来告知系统文件的执行都需要一个解释器。
举例:
#!/bin/sh
#!/bin/bash - 调用脚本
有三种方法:
①sh xxx.sh
②bash xxx.sh
bash +x xxx.sh
③./xxx.sh #需要给文件授予执行权限
#授予权限的方法如下
chmod +x helloworld.sh #授予可执行权限
chmod +rx helloworld.sh #授予任何人可执行可读和可执行权限
chmod u+rx helloworld.sh #只给脚本的所有者可读和可执行权限
3. 写一个简单的脚本
#!/bin/bash
echo "test"
- Linux管道
可以将两个或多个命令连接到一起,使用符号———— | ,这个被称为管道符
用法:把上一个命令的输出作为下一个命令的输入
补充:有输入才能有输出,如果输出出错,则输入无法处理 - shell的特殊字符
# 注释,声明命令解释器的类型,某些特定的模式匹配操作使用
; 命令分隔符,可以在同一行上写多个命令
;; 双分号,终止case选项
. bash内置命令 补充:点(.)放在文件名前面表示隐藏文件。移动文件操作时,如果是单独点作为参数cp cxx/helloworld.sh .表示当前工作目录。
两个点(..),表示上一级目录。正则表达式中作为匹配任何的单个字符
" " 双引号表示字符串
' ' 单引号表示字符
, 逗号操作符 补充:作用是链接一系列操作
\ 反斜杠(\) 补充:对单个字符的引用机制 一般用来转义双引号(" ") 和单引号(' ')。
/ 正斜杠(/) 补充:作为文件名路径分隔符/data/cxx/Makefile。用作除法算术操作符
* 乘法算术操作符。两个(**)表示求幂运算符。通配符,可以用来匹配给定目录下的任何文件名
? 测试通配符。通配符,在正则表达式中表示一个字符,也可以用来匹配单个字符。
$ **引用变量**。正则表达式中,表示行结束符。
${} 参数替换
**$* or $@ 位置参数**
$$ 进程ID变量 补充:保存所在脚本的进程ID
$? 退出状态码变量 补充:可保存命令、函数或者脚本本身的退出状态码 一般是0或 1。
{ } 大括号,代码块,也叫作内部组。 补充:在函数或者判断语句中使用代码块 在大括号中不允许有空白,除非空白被引用或者转义
[ ] 测试条件。数组元素。字符范围 补充:作为字符范围时,方括号描述一个匹配的字符范围
> &> >& >> < <> 重定向
- shell中的参数
$0 shell文件本身的文件名
1 ~ 1~ 1~n 添加到Shell的各参数值。$1是第1参数、 2 是第 2 参数、 … 、 2是第2参数、…、 2是第2参数、…、n表示第n个参数。注意:10以上要用大括号,如{10}。
$? 最后运行命令的结束代码(返回值),执行成功返回0,不成功则返回非零值(一般解释为错误码)。
$$ Shell本身的PID(ProcessID)
$! Shell最后运行的后台Process的PID
$- 使用Set命令设定的Flag一览
∗ 所有参数列表。如 " * 所有参数列表。如 " ∗