下面是我学习慕课网Linux运维工程师的部分笔记,,慕课网学习地址Linux运维工程师学习路径
1.1,一个完整的shell脚本应该包括
脚本申明,#!
注释信息,#
可执行语句
例如:
#!/bin/bash
#For Example
pwd
1.2,执行脚本的三种方式
- 脚本文件路径 ./Example.sh
- sh脚本文件路径 sh example.sh
- source脚本文件路径 source example.sh
直接访问脚本路径的方式有点特殊,需要加可执行权限,
chmod u+x Example.sh
1.3,查看shell
- cat /etc/shells #查看系统中可用的shell解释器查看
- echo $SHELL #查看系统的当前shell解释器
2.1,shell接受用户的参数
Example.sh
$1,$2,three,four,five,$6
还有下面这些已经被定义的shell预定义变量
$0,#当前执行shell脚本的程序名
$1-9,\${10},${11}... ,#参数的位置变量
$# , #一共有多少个参数
$* , #所有位置变量的值
$? , #判断上一条命令是否执行成功,0成功,非0失败
vim Example.sh
#! /bin/bash
echo "总共有$#个参数,分别是$*。"
echo "第一个参数为$1,第五个参数为$5。"
这一章我也有点迷,视频地址http://www.imooc.com/learn/175
3.1 通配符
? #匹配任意一个字符
* #匹配一个,0个,多个任意字符,也就是可以匹配任意字符
[] #匹配括号中任意一个字符
[-] #匹配括号中任意一个字符,其中”-“代表一个范围
[^] #逻辑非,表示匹配不是中括号中的任意一个字符,例如[^0-9]
4.1 输出重定向
1,表示含义
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/stdout | 1 | 标准输出 |
显示器 | /dev/sdterr | 2 | 标准错误输出 |
2,
类型 | 符号 | 作用 |
---|---|---|
标准输出重定向 | 命令 > 文件 | 以覆盖的方式添加到文件内 |
标准输出重定向 | 命令 >> 文件 | 以追加的方式把命令的正确输出指定文件或设备中 |
标准错误输出重定向 | 错误命令2>文件 | “>”左右两边没有空格 |
标准错误输出重定向 | 错误命令2>>文件 | 也没有空格,以追加的方式 |
3,正确输出和错误输出同时保存
- 命令 > 文件2>&1 覆盖,保存到同一个文件
- 命令 >> 文件2>&1 追加,保存到同一个文件
- 命令 &> 文件 覆盖
- 命令 &> 文件 追加
- 命令 >> 文件1 2>>文件2 正确输出到文件1,错误输出到文件2
5.1 管道符
1,多命令执行符
多命令执行符 | 格式 | 作用 |
---|---|---|
; | 命令1 && 命令2 | 逻辑与,命令1正确执行,命令2才会执行;命令1执行不正确,命令2也不会执行 |
&& | 命令1 || 命令2 | 逻辑或,命令1执行不正确,命令2才会执行;当命令1执行正确,命令2不会执行 |
2,管道符
命令1 | 命令2
可以将命令1的正确输出作为命令2的操作对象
例如:
ll -a /etc/ | more
netstat -an | grep “ESTABLISHED”
6.1 bash中的其他特殊符号
- ” ,单引号,在单引号中所有的特殊符号,如”$”和”`”都没有特殊含义
- “” ,双引号,在双引号中特殊符号都没有特殊含义,但是”$”, “`”,”\”例外,拥有调用变量的值,引用命令,和转义符的作用
- “ ,反引号,反引号括起来的内容是系统命令,在bash中会先执行它
- (),和反引号作用一样,先执行,再赋值。推荐使用 (),因为反引号会比较容易看错。
- # ,代表注释
- $ ,调用变量的值
- \ ,转义符