1.什么是shell
shell是一个命令解释器,将人类输入高级语言,通过shell程序转换为二进制
shell分为两种使用方式
- 交互: 登录 执行命令 退出
- 非交互:执行某个文件,文件中都是一堆命令,整个文件从上往下执行
2.shell脚本能做什么
标准:
1.安装方式一致
2.安装路径一致
3.目录结构一致
4.日志格式一致
5.脚本路径一致
能将平时操作脚本化,流程化,自动化 ITIL
ppt 人 流程 技术/工具
备份
监控
自动化上线
约束标准
3.Shell脚本编写规范、执行方式。
执行方式分为两种:
1.加执行权限 ./script_filename.sh
2.通过bash直接翻译 bash script_filename.sh
'#!/usr/bin/bash 加与不加区别在哪?
1.如果你明确清楚这是一个什么类型的脚本,直接调用对应的解释器执行,没有影响?
2.如果你不清楚是什么类型的脚本, 直接使用./执行,那么会读取该脚本的第一行
如果第一行是#!/usr/bin/bash 或者 没有写该行,那么都将使用默认的bash翻译
问题: 如果我是一个python脚本,没有写开头,那么执行一定会报错
因为默认查找的是bash解释器,而我的文件需要用python解释器来翻译.
添加命令解释器的几种方式:
#!/usr/bin/bash
#!/usr/bin/sh
#!/usr/bin/env bash
#!/usr/bin/env python
1.什么是变量
变量是shell中传递数据的一种方法。
简单理解: 就是用一个固定的字符串去表示不固定的值,便于后续引用。
2.定义变量规范
1.大写开头,后面小写或数字都ok
2.变量具体一定的含义
3.注意 变量的写法 仅支持 a=1 不支持 a = 1
3.自定义变量
var="hello world"
echo $var
echo ${var}_log
$* 和 $@ 的区别?
可以看到不加引号时,二者都是返回传入的参数,但加了引号后,此时$*把参数作为一个字符串整体(单字符串)返回,$@把每个参数作为一个字符串返回
1.定义变量几种方式
1.1 自定义变量
1.2 系统全局变量
1.3 位置参数变量 sh test.sh 11 22
1.4 预定义变量 $? $#
2.通过read交互方式读入变量
read -t -s -n -p
3.变量替换
${var#}
${var##}
${var%}
${var%%}
${var//}
${var///}
${#var}
4.变量计算
[] expr
5.注意事项:
${} #引用变量
$() #和``功能相同, 都是用来做命令替换
$(()) #进行整数运算
$[] #进行整数运算
"" #弱引用,会解析变量
'' #强引用,所见即所得
6.if在判断的过程中,需要表达式
1.基于文件的方式判断 -d判断目录是否存在 -f判断文件是否存在 -s判断是否有内容默认是有 -e判断是否有这个对象 -z 空文件 -n非空
2.基于整数的方式判断 -eq 等于 -ne不等 -ge大等 -gt大于 -le小等 -lt小于
3.基于字符串方式判断 = !=
4.基于正则表达式方式判断 =~ ^[0-9]+ ^[A-Z]+
正则表达式外面格式为[[ ]]