1、概念
脚本:可运行的代码的集合
脚本语言(计算机语言)
特点:从上到下,按行执行
Python也是脚本语言,格式更严谨,严格的执行缩进,也是从上到下按行执行
shell脚本:在shell环境(/bin/bash,bash就是shell的解释器)linux环境下的编程语句
2、目的
实现自动化运维。可重复执行的,自动化的在系统中实现增删改查的操作
3、shell的解释器
sh:已经被淘汰
bash:sh的扩展版(默认就是bash)
csh:类c语言
tcsh:整合了c语言的shell
nologin:用户无法登录到系统的shell
4、shell的作用
1、自动化运维
2、批量化的重复操作以及配合定时任务执行
3、有了脚本就可以减轻管理员的工作量
4、避免配置出错
5、提高处理批量文件的速度
5、shell脚本的构成
第一行:#!/bin/bash 声明shell的解释器(默认就是bash,可以不写)只要不是默认的shell,其他的都要声明解释器
注释:以#开头就是注释的信息,注释的部分不会被执行,声明步骤的含义
可执行的语句:linux的命令都可以作为可执行语句,一行一行的往下写。一行就是一个可执行的语句
6、shell的执行方式
6.1不给脚本执行权限的执行方式
sh:就是在当前的shell里生成一个子shell,运行结果不改变父shell的环境
source:点命令. 它会改变当前shell的环境,也就是真正的执行代码
bash:就是在当前的shell里生成一个子shell,运行结果不改变父shell的环境
6.2赋权执行
脚本调试完毕都是赋权执行
7、重定向操作
标准输入
标准输出
标准错误输出:结果报错,未找到命令
重定向类型:
重定向输出:> 标准输出的结果保存到指定的文件,而且会覆盖文件原有的内容
>>标准输出的结果保存到文件,原有内容的尾部追加内容,不会覆盖原有的内容
2> 2>>标准错误输出的结果,保存到指定的文件
混合输出:&> &>> 既可以保存标准输出,也可以保存标准错误输出
重定向输入:< 从指定的文件获取数据
8、变量的作用和类型
8.1作用
用来存放系统和用户需要使用的特定的参数(值),变量保存在内存中。调用的时候直接到内存当中查找变量所在的内存地址
8.2类型
8.2.1自定义变量
名称由用户自己定义,值也可以自定义
8.2.1.1变量名的规范
1、不要使用系统的命令作为变量名
2、不要使用中文
3、不要使用特殊符号开头,可以用_开头,不要使用数字开头
4、变量名一般会使用对应的英文名
5、变量名要保持前后一致,要有注释,提高代码的可读性
8.2.1.2变量值
int:整数类型
string:字符串类型,需要用(单/双)引号" "引起来
浮点:0.12
布尔:true false
打印的时候变量前面加$ echo $a
8.2.1.3双引号、单引号、反撇号之间的作用和区别
双引号是弱引用,变量值就是变量值本身
单引号是强引用,变量值不再是本身定义的值,保持自身的字符串形式
反撇号`,命令替换,把命令的执行结果传给变量,作为变量的值,先执行命令再给变量赋值
8.2.1.4自定义输入变量的值
read -p "提示信息:" a
read -p "数字b:" b
c=$(($a+$b))
echo $c
-p:指定提示符,提示符的内容包含在" "中间," "可以为空,但是双引号必须要有
8.2.2全局变量
对整个系统生效,所有用户都可以使用
特点:全局生效,每个脚本的变量的值是固定的
持久性
共享性
全局变量适用于不需要经常更改的值
进入全局配置文件,对所有窗口生效
新窗口也生效
排错的方法:bash -x 脚本名
会把每一步都打印出来,方便定位哪一步有问题
8.2.3环境变量
系统创建的,用来设置用户的工作环境
可以理解为特殊的全局变量,配置文件在/etc/profile里
env查看环境变量
echo $PATH 可执行的命令,或者可执行的程序的默认路径
8.2.4位置变量
又叫命令行参数,是在脚本的外面给脚本内部传值
$1 $2 $3 $4......$9 从第一个到第九个
10以上要用{}把数字括起来
${10} ${11}
8.2.5预定义变量
编程语言和解释器提供的,用户无法更改,只能由系统自行更新和设置
$*和$@:表示命令或者脚本需要处理的参数,区别在于处理方式不同
$*和$@不加引号的表现一致,都是把参数一个一个处理
$*加了引号,会把参数当成一个整体来进行处理
$#:也是一个全局变量,用来统计传递给脚本或者函数的参数个数
$?:true false,命令执行之后返回的状态码
作用:只有0表示成功,所有非0都表示失败。返回上一次执行的命令的状态码
9、整数运算
+ - * / %(取余)
(1)c=$(($a+$b))
(2)c=$(expr $a \* $b)
(3)let c=$a+$b
10、小数运算
bc:是一个简易的系统自带的计算机程序,可以执行整数,也可以计算小数
c=$(echo "$a+$b" | bc)
awk 'BEGIN{print 2.35*4.99}'
11、i++、++i、i--、--i之间的区别
i=$(($i+1))
i++:先赋值,再加1
++i:先加再赋值
i=$(($i+1))
i--:先赋值,再减1
--i:先减再赋值