山东住房和建设庭官网站官,网站建设建设公司,qq企业邮箱怎么申请,网站被泛解析Shell脚本#xff1a;
脚本主要是为了业务#xff0c;辅助人工#xff0c;实现自动化运维 Shell:介于用户和内核之间#xff0c;充当翻译官的作用#xff0c;当用户执行相关的命令#xff0c;shell会把指令二进制传给内核#xff0c;内核处理完毕以后通过shell把内核的…Shell脚本
脚本主要是为了业务辅助人工实现自动化运维 Shell:介于用户和内核之间充当翻译官的作用当用户执行相关的命令shell会把指令二进制传给内核内核处理完毕以后通过shell把内核的执行结果转换成人类能够识别的语言 Linux中的shell种类:
Sh:已淘汰
Bash:默认的shell是sh的扩展
Csh:类C语言的shell
Tcsh整合了csh的功能也包括一部分shell的功能
在默认情况下我们使用的shell都是bash解释器
Nologin:这也是一种shell作用只有一个就是禁止用户登录主机 Shell语言又称脚本语言动态语言主要用来控制软件和应用程序一般都是以文本的形式保存运行时才会进行编译
Shell脚本的作用
自动化运维批量化重复操作可以减轻管理人员的工作量提供业务处理的速度脚本写完之后都是经过调试没有问题才会上线部署在配置的过程中减少了出错的概率 Shell脚本的构成
三部分组成
脚本申明解释器注释信息shell脚本已#为开头表示注释信息不会被运行
注释可以帮助工作人员更好的理解代码的架构
可执行语句
shell脚本当中所有Linux的命令行可以执行命令都可以做为脚本的可执行语句 Shell脚本的执行方式
赋权执行给脚本执行权限
Chmod 777 first.sh
./表示执行当前目录下的可执行文件但是这个文件必须要有执行权限
./first.sh
/opt/first.sh
这两种不行要有执行权限不然不成功 直接执行一般用于调试脚本的内容
Bash first.sh
Sh first.sh
Source:这是点命令也就是符号是bash的内部命令重新执行刚修改完的初始化文件可以让命令在配置文件中立刻生效无须重启
Bash sh ./ 这三种都是运行运行代码反馈结果
Source执行执行脚本中的命令脚本当中的代码会被真正的执行展示真正的结果
都是有结果一个没有过程一个有过程 重定向
交互式硬件设备的执行方式
标准输入设备是键盘而且输入的结果符合编码规范标准输出设备是显示器符合编码规范的命令给予执行结果标准错误输出设备是显示器不符合编码规范的结果给予错误输出的执行结果 Echo 123 123
这是重定向输出 把标准输入保存到指定的文件中会覆盖原有内容 把标准输入保存到指定文件的尾部相当于行后追加不覆盖原有内容
重定向错误输出2 将错误信息保存到指定的文件会覆盖原有的内容
2 将错误信息保存到指定的文件的尾部不会覆盖原有的内容
混合输出既可以保存标准输出也可以保存标准错误输出到指定文件会覆盖原有内容
既可以保存标准输出也可以保存标准错误输出到指定文件的尾部不会覆盖原有内容
重定向输入 从指定的文件读取数据 Shell的变量
面向对象
变量描述对象属性或者参数。Shell的变量是存放系统和用户需要使用的特点参数与值
变量的类型int整数 string字符串 truefalse:布尔类型 浮点1.23
变量名称有固定名称的变量一般是系统预设
自定义的变量名不要使用系统命令作为变量名
不要使用中文
不能使用特殊符合开头 只有_可以做开头
不要使用数字开头
不需要声明变量类型直接赋值就可以
变量赋值时引号的用法
强引用和弱引用
打印变量时。加上双引号是弱引用
加上单引号是强引用text就会被认为是普通字符串。打印的结果也是字符串
赋值变量时双引号和单引号没有任何区别
反撇号 先执行反撇号当中的命令然后再命令运行的结果赋值变量
自定义变量的类型
一般自定义
A1
B2
只读变量他是不可以重新赋值的
Readonly 他只能重启或者bash才能删除
Read 通过命令获取内容然后给变量赋值
Read -p “一定要加上提示字符” 变量名
变量的作用范围
自定义变量只在当前的shell环境生效
全局变量(自定义的)1.系统预设的全局变量对所有用户都能生效
自定义全局变量临时声明全局也是在当前shell生效
一般来说我们自定义变量可能需要根据条件时常修改以满足不同的条件一旦作为全局变量引用的值或者参数不需要变的
全局变量是所有人都可以引用会导致程序状态的不确定性 环境变量1.系统预设用来设置用户的工作环境
自定义环境变量主要是用于满足个人需求的工作环境可以随时创建随时修改随时删除
系统可以识别到用户所需的操作指定可以直接运行调用 位置变量命令行参数
在脚本运行时从脚本的外部通过位置变量给脚本内部的程序传参
n 这的n是数字1-9
10以上要用{10}
传参的顺序是从左向右
$0特殊的位置变量表示命令本身
/first.sh 10 20
$0 $1 $2 预定义变量编程语言或者脚本解释器提供的自动设置自动更新只能用不能修改
$* $ $# $?
$*与$:表示命令或者脚本需要处理的参数
$*:不加引号会把参数一个一个处理加上引号会当成整体处理
$:加不加引号都会将参数一个一个处理
$*与$,在不加引号的时候表现一致
$#:特殊的预定义变量表示传递给脚本有几个参数就是统计传递了多少个参数
$?:表示前一条命令的返回状态码只有0表示执行成功或者执行正确所有非0一律表示执行出现异常 Shell当中的变量的运算符
运算符 - * / % 加 减 乘 除整 取余
整数运算
I$((125))
I$(expr 12 \* 5)#这边乘是特殊方式其他都是这种I$(expr 12 5)
I$[12/5] #此方式已经弃用
Let i12*5
I:每次自增1先赋值再加1
-:
i:每次自增1先再加1在赋值
--I: 非整数运算:
Bc linux自带的计算器 例如echo 2*2 | bc
Awk 例如num$(awk BEGIN{print (4587)*23}) 脚本执行实验
配置文件vim first.sh
#/bin/bash
#this is my first shell!
Cd /boot
Echo “当前的目录位置”
Pwd
Echo “其中以vml开头的文件包括”
Ls -lh vml*
:wq!保存 输出实验
Echo 123 index.html
Cat index.html
Echo 123 index.html
Echo 123 index.html
Echo 123 index.html 重定向输入实验
Echo “1” pass.txt
Cat pass.txt
Passwd --stdin lmn pass.txt 自定义变量实验
A1
Echo $a #这是打印变量值
Atest
Echo $a A1
B1
Echo $a $b
Echo ${a} ${b} 引号实验
Text’123’
Echo $text
Echo “$text” 反撇号实验
Als -lh
Echo $a 只读变量实验
A1
Readonly a1 Nuset b#这是删除变量 Read -p实验
配置文件vim first.sh
Read -p “输入一个变量名” num1
Read -p “请再输入一个变量名” num2
Sum$(($num1$num2))
Echo $sum
:wq Export a4
Export b8
Vim text.sh
C$($a$b)
e Bash text.h Vim /etc/profile #全局配置文件对所有用户生效
Export a10
Export b20
Source /etc/profile Evn #查看环境变量
Echo $USER#这是用户名环境变量
Echo $HOME#查询当前用户的家目录
Echo $LANG#查询语言和字符集
Echo $PWD#查询当前所在的目录
Echo $PATH
环境变量类似于全局变量。和全局变量作用一致环境变量系统识别直接调用
PATH”$PATH:/root”
Export PATH”$PATH:root”
Cd ~
Ls
Touch 123.sh
Chmod 777 123.sh
Cd /opt/
Cd /etc/
Cd /etc/sysconfig/
Sh $*与$实验
Vim first.sh
Abc() {
For i in “$”
Do
Echo $i
done
}
Abc “hello” “world” “!”
:wq! Vim first.sh
Abc() {
For i in $
Do
Echo $i
done
}
Abc “hello” “world” “!”
:wq! Vim first.sh
Abc() {
For i in “$*”
Do
Echo $i
done
}
Abc “hello” “world” “!”
:wq! Vim first.sh
Abc() {
For i in $*
Do
Echo $i
done
}
Abc “hello” “world” “!”
:wq!