欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第十周-day43-Shell编程基础

程序员文章站 2022-03-09 14:28:19
...

第十周-day43-Shell编程基础

格式

#!/bin/bash
#!幻数 指定脚本用的命令解释器
执行脚本
sh
sh +x

1、为什么要学习shell编程?

Linux系统中会大量的使用Shell,工作中我们也需要自动化实现业务,例如:自动备份、监控、自动安装服务
Shell编程是Linux运维人员必须要会编程语言。最简单的编程语言。
编程也是运维人员必须具备的本领:
Shell、python是运维人员必须具备的本领

2、什么是Shell?

shell就是一个解释器(翻译官),命令行的命令以及脚本都会通过shell解释,传给操作系统,处理后在输出给用户。

3、Shell的分类

/bin/sh、/bin/bash、/usr/bin/sh、/usr/bin/bash

4、CentOS7默认脚本是Shell

[aaa@qq.com ~]# echo $SHELL
/bin/bash

5、什么是Shell脚本?

程序、命令放入文件里执行,这个文件称之为Shell脚本文件。
工作中最多的编程写脚本,存放在文件里。

二、变量

1.变量

方便脚本里面进行重复使用

命名规则
	看见变量名称  识别变量作用
	不能以数字开头

变量分类
	局部变量(普通变量)
	IP=10.0.0.200
	time=2019-01-01

全局变量(环境变量)
	系统创建
        在整个系统中生效
	大部分地方意思一样
	一般是大写

特殊变量
        \$?  数字  \$#  \$*

2.局部变量(普通变量)

第十周-day43-Shell编程基础

3.引号系列

第十周-day43-Shell编程基础

4.特殊变量

第十周-day43-Shell编程基础

5.局部变量和全局变量区别:

[aaa@qq.com /server/scripts]# LIDAO=996
[aaa@qq.com /server/scripts]# 
[aaa@qq.com /server/scripts]# echo $LIDAO
996
[aaa@qq.com /server/scripts]# cat show.sh 
#!/bin/bash
echo $LIDAO
[aaa@qq.com ~]# sh show.sh  \\执行脚本为空

[aaa@qq.com ~]# 
[09:17 aaa@qq.com ~]#  export LIDAONB  \\添加全局变量
[09:22 aaa@qq.com ~]# echo $LIDAONB
666
[09:22 aaa@qq.com ~]# sh show.sh 
666

6.局部变量和全局变量区别

https://www.processon.com/view/link/5a0e4380e4b06c8e10923353
第十周-day43-Shell编程基础

第十周-day43-Shell编程基础

7.awk的 -v 参数

[09:49 aaa@qq.com ~]# x=10
[09:49 aaa@qq.com ~]# y=99
[09:49 aaa@qq.com ~]# echo $x
10
[09:49 aaa@qq.com ~]# echo $y
99
[09:49 aaa@qq.com ~]# awk 'BEGIN{print $x/$y}'
awk: cmd. line:1: fatal: division by zero attempted
[09:49 aaa@qq.com ~]# awk -vn1=10 -vn2=99 'BEGIN{print n1/n2}'
0.10101
[09:51 aaa@qq.com ~]# awk -vn1=$x -vn2=$y 'BEGIN{print n1/n2}'
0.10101
[09:51 aaa@qq.com ~]# awk -vx=10 -vy=99 'BEGIN{print x/y}'
0.10101
[09:53 aaa@qq.com ~]# 

8.利用shell编译小型计算器

[10:18 aaa@qq.com ~]# vim show.sh 
#!/bin/bash
. /etc/profile
x=$1
y=$2

echo $1\+$2= ;awk -vx=$x -vy=$y 'BEGIN{print x+y}'
echo $1\-$2= ;awk -vx=$x -vy=$y 'BEGIN{print x-y}'
echo $1\*$2= ;awk -vx=$x -vy=$y 'BEGIN{print x*y}'
echo $1\/$2= ;awk -vx=$x -vy=$y 'BEGIN{print x/y}'

[10:19 aaa@qq.com ~]# sh show.sh 5 6
5+6=
11
5-6=
-1
5*6=
30
5/6=
0.833333

9.特殊变量中简单判断参数个数:

第十周-day43-Shell编程基础

第十周-day43-Shell编程基础

10.判断目录存不存在,不存在就创建

第十周-day43-Shell编程基础

第十周-day43-Shell编程基础

三、判断语句

if判断句语法:单分支: 如果。。。那么就
if [ 表达式 ]
then命令
else
exit 退出
fi 果如

1.if语句格式:

if [ 表达式 ]
    then命令
    exit 退出
fi

第十周-day43-Shell编程基础
第十周-day43-Shell编程基础

2.对比两个数值大小

第十周-day43-Shell编程基础
第十周-day43-Shell编程基础

3.检查定时任务是否运行中

第十周-day43-Shell编程基础第十周-day43-Shell编程基础

避免过滤的时候 过滤掉grep命令自己

第十周-day43-Shell编程基础

四、循环语句

for语句

第十周-day43-Shell编程基础

五、扩展:

read命令

http://man.linuxde.net/read

从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合。该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开。在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY

-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒)。

第十周-day43-Shell编程基础

第十周-day43-Shell编程基础

总结:

1.变量 特殊变量 $# $* $1 $0
2.判断与循环
服务脚本
任务:

批量添加用户设置随机密码 for循环实现
批量修改文件名字 for/rename
touch /oldboy/oldboy.txt 批量.txt修改为.jpg

未完待续…