文章目录
Shell脚本
脚本就是可运行的代码的集合,脚本语言(计算机语言)脚本的特点:从上到下,按时执行。
python 脚本语言 格式更严谨 严格的执行缩进,也是从上倒下按行执行
shell脚本就是在shell环境(/bin/bash)bsah就是shell解释器,linux环境下的编程语句。
自动化运维,可重复执行的,自动化的在系统中实现曾删该查的操作。
shell的解释器
默认就是bash
sh:已经淘汰了
bash:sh的扩展版
csh:类c语言
tcsh:整合了c语言的shell
nolong:用户无法登录到系统的shell。
Shell的作用
1、自动运维
2、批量化的重复操作以及配合定时任务执行
3、有了脚本就可以减轻管理员的工作量
4、避免配置出错。
5、提供批量处理文件的速度
Shell脚本的构成
第一行:声明解释器
注释:以#开头 就是注释信息
Shell的执行方式
不给脚本执行权限的执行方式:
sh:就是在当前的shell里生成 一个子shell,运行结果不改变父shell的环境
bash:就是在当前的shell里生成 一个子shell,运行结果不改变父shell的环境
source:点命令,会改变当前shell的环境,也就是真正的执行代码
sh bash 用于调试脚本
第二种:
脚本调试完毕都是赋权执行。
重定向操作
标准输入:标准输入通常表示程序在接受数据的来源。当程序需要从用户或另一个程序获取输入时,他会从标准输入读取数据。在大多数情况下,标准输入是通过键盘输入的。
标准输出:标准输出是程序通常向其发送信息的位置,当程序产生输出时,它将输出写入到标准输出中。这些输出通常被显示在终端上
标准错误输出:标准错误输出用于程序报告错误和警告信息。与标准输出类似,标准错误输出通常也会显示在终端
重定向输出: > >> (标准输出)
>
标准输出的结果保存到指定的文件,而且会覆盖文件原有内容>
标准输出的结果存到文件,原有内容的尾部追加内容,不会覆盖原有的内容
2> 2>> 标准错误输出的结果,保存到指定文件。
&> &>> 混合输出,既可以保存标准输出,也可以保存标准的错误输出
:< c 从指定的文件获取数据
变量
变量的作用和类型,如何声明变量
变量的作用:用来存放系统和用户需要使用的设定的参数(值),变量保存在内存中。调用的时候
变量的类型:
自定义变量 名称由用户自定义 值也可以自定义
变量名的规范
1、不要使用系统的命令作为变量名
2、不要使用中文
3、不要使用特殊符号开头,可以使用下划线开头,不要使用数字开头
4、变量名我们一般会使用对应的英文名称来使用,
5、变量名要保持前后一致,要有注释。提高代码的可读性
变量值的规范
int 整数 string 字符串 浮点0.12 布尔: true false
声明是字符串,需要用引号引起来
双引号 单引号 反撇号的作用和区别
双引号 弱引用
bash
# vim test.sh 文本编辑
a="test"
echo "$a"
查看变量的值有没有
sh test.sh
test 可以看到没有变化
单引号
bash
# vim test.sh 文本编辑
a='test'
echo '$a'
查看变化
# sh test.sh
$a
反撇号
bash
# vim test.sh
a=`ls /opt`
echo "$a"
查看内容
# ls
passwd.txt test2.txt test.sh
# sh test.sh
passwd.txt
test2.txt
test.sh
双引号就是弱引用,变量值就是变量值本身
单引号就是强引用,变量值不再是本身定义的值,保持自身的字符的字符串形式
反撇号哦,命令替换,把命令的执行结果传给变量,作为变量的值,先执行命令,再给变量赋值
如何自定义输入变量的值
read -p "提示信息必须要有:" a
-p 指定提示符,提示符的内容包含在" "中间," "可以为空,但是双引号必须要有(整数运算)
bash
文本格式
read -p "提示信息:" a
read -p "数字b:" b
c=$(($a+$b))
echo $c
结果
# vim test.sh
# sh test.sh
提示信息:12
数字b:15
27
全局变量:对整个系统生效,所有用户都可以使用
全局生效,每个脚本的变量值,固定的 可进入到 /etc/profile 全局配置中添加 export添加 然后刷新服务
bash
# source /etc/profile
# sh test.sh
4
持久性
共享性
全局变量适用于不需要经常更改的值,
排错方法:bash· -x+脚本名:检查语法错误
环境变量:环境变量是系统创建的,用来设置的用户的工作环境变量
环境变量可以理解为特殊的全局变量
bash
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
可执行的命令,或者可执行的程序的默认路径
添加
PSTH="$PATH:/root"
位置变量:有叫做命令行参数,是在脚本的外面给脚本内部传值。
$1 $2 $3$4...$9
从第一个到弟九个
10以后要用{}把数字扩起来
bash
# vim test.sh
a=$1
b=$2
c=$(($a+$b))
echo $c
# sh test.sh 4 8
12
预定义变量:编程语言和解释器提供的,用户无法更改,只能由系统自行更新和设备。
∗ 和 *和 ∗和@:表示 命令或者脚本需要处理的参数,二者的区别在于处理方式的不同
$*和¥@ :不加引号的表现一致,都是把参数一个一个的处理
bash
# sh test.sh
1
2
3
$*:加了引号,会把参数当成一个整体来进行处理
bash
# sh test.sh
1 2 3
$# :也是全局变量,统计传递给脚本或者函数的参数个数
$? true false 命令执行之后返回的状态码
只有0,表示成功
bash
# sh test.sh
1
2
3
传了几个:3
# echo $?
0
所有非0的都表示失败
在文案中删除一行测试报错
返回最近一次执行命令的状态码
整数运算 + - × / %
bash
a=20
b=6
c=$(($a+$b))
d=$[$a-$b]
e=$(expr $a \* $b)
let f=$a/$b
g=$(($a%$b))
echo $c $d $e $f $g
# sh test.sh
26 14 120 3 2
小数运算
bc是一个简易的系统自带的计算机程序,可以执行整数,也可以计算小数
bash
# sh test.sh
输入第一个数11
输入第二个数11
22
# sh test.sh
输入第一个数20.39
输入第二个数30.35
50.74
bash
awk 'BEGIN {print 2.4*5.2}' 命令行模式
12.48
i++:先赋值,再加1 先用后加
++i:先加在赋值 先加后用
i-- 先用后减
--i 先减后用
小数运算
bc是一个简易的系统自带的计算机程序,可以执行整数,也可以计算小数
[外链图片转存中...(img-EPT3ukpQ-1718100979819)]
bash
# sh test.sh
输入第一个数11
输入第二个数11
22
# sh test.sh
输入第一个数20.39
输入第二个数30.35
50.74
bash
awk 'BEGIN {print 2.4*5.2}' 命令行模式
12.48
i++:先赋值,再加1 先用后加
++i:先加在赋值 先加后用
i-- 先用后减
--i 先减后用