1.shell脚本基础
什么是shell
shell是一个特殊的应用程序,它介于操作系统内核和用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。
shell的应用场景
重复性操作
交互性任务
批量事务处理
服务运行状态监控
定时任务执行
2.shell脚本的编写格式
脚本申明(解释器) :若第一行为“!/bin/bash",表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。还有其它类型的解释器,
比如
# !/usr/bin/python.
#! /usr/bin/expect.
.注释信息:以“#"开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行
可执行语句:比如echo命令,用于输出”"之间的字符串
如果想要把文本字符串和命令输出显示在同一行中,可以使用echo语句的 -n 参数
-----------------------------------------------------------------------------------------------
2.1shell脚本执行的方法
-------------------------------------------------------------------------------------
2.2shell脚本执行逻辑和方式
顺序执行:程序按从上到下顺序执行
选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行
循环执行:程序执行过程中需要重复执行多次某段语句
执行方式
指定路径去执行文件(需要有执行权限)
指定解释器去执行(不需要权限)
------------------------------------------------------------------------------------------------
2.3重定向
1 交互式硬件设备
2 重定向操作
---------------------------------------------------------------------------------------------------------------
3.shell脚本变量
3.1 变量的作用
用来存放系统和用户需要使用的特定参数(值)
变量名:使用固定的名称,由系统预设或用户定义
变量值:能够根据用户设置、系统环境的变化而变化
3.2 变量的类型
自定义变量:由用户自己定义、修改和使用;
特殊变量:环境变量,只读变量,位置变量,预定义变量。
3.3 自定义变量
1、定义新的变量:
格式:变量名=变量值
双引号" ":允许通过$符号引用其他变量值
单引号 ’ ':禁止引用其他变量值, $视为普通字符
反撇号 `` :命令替换,提取命令执行后的输出结果,和$(…)作用相同
变量作用范围
默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。当进入子程序或新的子Shell环境时局部变量将无法再使用。
可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用。
永久设置变量,需要在/etc/profile文件里面添加
3.4.整数变量的算术计算
i=KaTeX parse error: Undefined control sequence: \* at position 10: (expr 12 \̲*̲ 5) i=((12*5))
i=[ 12 ∗ 5 ] l e t i = 12 ∗ 5 l e t i + + i = [12*5] let i=12*5 let i++ i=[12∗5]leti=12∗5leti++i=[i + 1 ] l e t i − − i = i+1] let i-- i=i+1]leti−−i=[i − 1 ] l e t i + = 2 i = i-1] let i+=2 i=i−1]leti+=2i=[i + 2 ] l e t i / = 2 i = i+2] let i/=2 i=i+2]leti/=2i=[i / 2 ] e x p r 变 量 1 运 算 符 变 量 2 v a r = i/2] expr 变量1 运算符 变量2 var=i/2]expr变量1运算符变量2var=(expr 变量1 运算符 变量2)
var=( ( 变 量 1 运 算 符 变 量 2 ) ) v a r = ((变量1 运算符 变量2)) var=((变量1运算符变量2))var=[变量1 运算符 变量2]
let var=变量1
运算符
变量2 i++是先赋值,再运算
++i是先运算再赋值
let i++ ## i++ 相当于 i=$[ KaTeX parse error: Expected 'EOF', got '#' at position 20: … ] let i-- #̲# i-- 相当于 i=[ KaTeX parse error: Expected 'EOF', got '#' at position 23: …] let i+=2 #̲# i+=2 相当于 i=[ KaTeX parse error: Expected 'EOF', got '#' at position 20: … ] let i/=2 #̲# i/=2相当于 i=[ $i / 2 ]
4.特殊变量
4.1环境变量
使用 env 命令可以查看到当前工作环境下的所有环境变量
常用环境变量:
变量USER 表示用户名称
变量HOME 表示用户的宿主目录
变量LANG 表示语言和字符集
变量PWD 表示当前所在工作目录
变量PATH 表示可执行用户程序的默认路径
4.2位置变量
当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量。
$n:n为数字,$0代表命令本身,1~9代表第一个到第九个参数,十以上的参数需要使用大括号表示,比如第十个参数为 ${10}
-----------------------------------------------------------------
4.3预定义变量