1.shell脚本入门
1.1.shell的简介
shell是一种脚本语言,又是一种命令语言,可以通俗一点讲,shell脚本就是一些列命令的集合,可以在Unix、linux上直接使用,并且直接调用大量系统内部的功能来解释执行程序把一些重复性的工作交给shell做,来实现自动化运维。shell虽然没有java、c++、python等强大,但也支持了基本的编程元素,例如if、for、while等,还有变量数组、字符串、注释、加减乘除逻辑运算等。
1.2.shell的应用场景
shell主要开发一些实用的、自动化的小工具,而不是用来卡法复杂的业务逻辑的 (1)监控linux环境变量的使用情况 (2)数据的处理,日志的切割、分析、统计等 (3)与数据库的交互,对数据库进行增删改查 (4)监控进程,自动化启停服务进程 (5)完成一些重复性的工作,创建100哥新用户或者配置某个文件等等
1.3.shell常见的解释器
解释器:一种命令解释器,主要作用是对命令进行运行和解释,将需要执行的操作传递给操作系统内核并执行 四种解释器: #!/bin/bash(默认) #!/bin/ksh #!/bin/bsh #!/bin/sh
- 注意:shell脚本运行不一定需要解释器,有些脚本没有解释器也可以运行
1.4.shell脚本文件权限与脚本执行
- 文件创建默认是没有执行权限的,所以要给加上权限:chmod u+x sh结尾的文件。
- 执行shell脚本的方法:
方法一:sh 文件名 方法二:bash 文件名 方法三:./文件名 方法四:source 文件名
2.shell的变量以及常见符号
2.1.常见变量
- =:等于号赋值,a=15
- $a:调取a变量的值
- ${a}:调取a变量的值,当{a}后面有其他字符时,不会影响a的获取
- $?:判断上一条命令执行的结果,成功为0,失败为1
- $1-$9:返回对应的第几个参数
- $*:返回所有的参数的值是什么
- $#:返回参数的个数
(1)= 等号的作用
a=15;b=20;echo "$a,$b"
(2)a 和 a和a和{a}的区别
echo "$abbbbb";echo "${a}bbbbb"
(3)$?显示上一条命令执行的结果
echo "$?"
(4)编写脚本,验证∗ , *,∗,#.$0-$9的用途
#!/bin/bash #测试$*,$#,$0-$9的作用 #by lixiang 2021年8月 echo "当前执行的脚本为:$0" echo "第一个参数:$1" echo ”第二个参数:$2" echo "一共输入多少个参数:$#" echo ”所有的参数为:$*"
2.2.常见的符号
> #输出重定向(覆盖) >> #输出重定向(追加) ; #执行多条命令 | #管道符 && #前一条命令执行成功才会执行后面 || #前一条命令执行失败才会执行后面 "" #输出变量识别通配符 '' #输出本身 `` #优先执行,放在``中会识别成命令执行 2>/dev/null #错误输出到无底洞
2.3.计算运算符及linux中的计算器
整数形式
(1)整数相加
- 常量
方式一:expr 13 + 12 方式二:echo $[13 + 12] 方式三:echo $((13 + 12))
- 变量
方式一:expr $a + $b 方式二:echo $[a + b] 方式三:echo $((a + b))
(2)整数相减
- 常量
方式一:expr 13 - 12 方式二:echo $[13 - 12] 方式三:echo $((13 - 12))
- 变量
方式一:expr $a - $b 方式二:echo $[a - b] 方式三:echo $((a - b))
(3)整数相乘(注意:expr 执行 *为通配符,需要加 \ *进行转义)
- 常量
方式一:expr 13 \* 12 方式二:echo $[13 * 12] 方式三:echo $((13 * 12))
- 变量
方式一:expr $a \* $b 方式二:echo $[a * b] 方式三:echo $((a * b))
(4)整数相除
- 常量
方式一:expr 13 / 12 方式二:echo $[13 / 12] 方式三:echo $((13 / 12))
- 变量
方式一:expr $a / $b 方式二:echo $[a / b] 方式三:echo $((a / b))
(5)整数求余
- 常量
方式一:expr 13 % 12 方式二:echo $[13 % 12] 方式三:echo $((13 % 12))
- 变量
方式一:expr $a % $b 方式二:echo $[a % b] 方式三:echo $((a % b))
小数形式
- 借助bc计算器,保留多少为小数可以通过sacle,但是scale只对除法,取余数,乘法有效,对加减无效
(1)1.2+1.3 保留两位小数
echo "scale=2;(1.2 + 1.2)/1" | bc
2.4.常见的条件判断
- 语法:[ 判断表达式 ]
文件夹或者路径
-e:目标是否存在(exist) -d:是否为目录(directory) -f:是否为文件(file)
(1)判断是否存在lixiang.sh文件
[ -e lixiang.sh ] && echo "存在"
(2)判断lixiang.sh是不是一个文件
[ -f lixiang.sh ] && echo "YES"
(3)判断lixiang.sh谁不是一个目录
[ -d lixiang.sh ] || echo "NO"