小白到运维工程师自学之路 第五十集 (shell脚本语句基本使用)

一、概述

Shell脚本是一种编写在Unix或类Unix系统中的脚本语言,用于自动化执行一系列命令。它是一种批处理语言,可以执行多个命令、控制流程和变量操作,提供了一种简洁、高效的方式来处理和管理系统操作。

Shell脚本通常使用文本编辑器编写,以脚本文件的形式存在,并通过命令行解释器执行。在Unix系统中,通常使用Bourne shell(例如bash)、C shell或Korn shell等解释器来执行脚本。

Shell脚本能够完成很多任务,包括但不限于文件操作、目录管理、进程控制、系统配置以及运行其他程序等。通过编写Shell脚本,用户可以以一种自动化和批处理的方式执行复杂的任务,从而减少手动操作的工作量,提高工作效率。

二、原理

1、提示符:Shell会在命令行中显示一个特定的符号(通常是$或#),作为用户输入命令的提示符。

2、读取输入:用户在命令行中输入命令或脚本,并按下回车键。Shell会读取用户的输入,并将其作为待执行的命令。

3、解析命令:Shell解析用户的输入命令,将其拆分为命令和参数,并识别出命令的类型和含义。

4、执行命令:根据解析结果,Shell调用相应的程序来执行命令。程序可以是系统内置的命令,也可以是外部的可执行文件。

5、输出结果:执行命令后,Shell将结果输出到终端,供用户查看。输出可以是文本信息、错误提示、命令执行状态或其他相关信息。

6、控制流程:Shell根据命令的执行结果,可以根据条件进行分支、循环以及其他控制流程操作。这样可以实现条件判断、循环执行和错误处理等功能。

7、脚本执行:如果用户输入的是一个脚本文件,Shell会按照文件中的命令顺序逐行执行,从而实现一系列自动化任务。

三、常见的测试选项

-d测试目录

-f测试文件

-w测试写权限

-r测试读权限

-x测试执行权限

-e测试文件目录是否存在

四、常见的比较运算符

gt大于

lt小于

ge大于等于

le小于等于

eq等于

ne不等于

五、字符串的比较

=:字符串内容是否相同

!=:字符串内容是否不同

-z:检查字符串是否为空

字符串比较的应用,字符串需要使用双引号

六、逻辑测试

&&:而且或者用-a表示,两个结果为真显示

||:或,或者使用-o表示,两个判断结果只需要满足一个条件显示为真

!:否,两个判断结果不成立为真

七、语句

1、if判断

①、单分支

条件满足执行命令序列

#!/bin/bash
du=$(df | grep "/$" | awk '{print $5}' | awk -F '%' '{print $1}')
if [ $du -gt 3 ]
then
          echo "使用超出"
fi

小白到运维工程师自学之路 第五十集 (shell脚本语句基本使用)_第1张图片

 执行脚本

②、双分支

条件满足执行第一个命令序列

条件不满足执行第二个命令序列

#!/bin/bash
netstat -alnpt | grep :80                        查询80端口是否启用
if [ $? -eq 0 ]                                  如果等于0
then                                             则
        echo "网站正在运行"                       输出网站正在运行
else                                             否则
        echo "服务关闭,尝试安装并启用"            输出服务关闭尝试安装并启用
        yum -y install httpd > /dev/null         安装httpd
        systemctl start httpd                    启动httpd
fi                                               结束

小白到运维工程师自学之路 第五十集 (shell脚本语句基本使用)_第2张图片

执行脚本

2、for语句

for循环语法结构:

for 变量名 in 取值列表

do

命令序列

done

使用for循环写一个乘法表

#!/bin/bash
for i in {1..9}                         变量为i循环1-9
do
        for ((j=1;j<=$i;j++))           运算j=1;j<=变量i;j++表示j每次运算都会在上面的一个值上+1
        do
                echo -n "${j}x${i}=$(($i*$j)) "
        done
        echo
done

 小白到运维工程师自学之路 第五十集 (shell脚本语句基本使用)_第3张图片

小白到运维工程师自学之路 第五十集 (shell脚本语句基本使用)_第4张图片

3、while循环语句

while的命令结构:

while [条件]

do

命令序列

done

使用while循环创建20个用户密码为123456

#!/bin/bash
i=1                               定义变量i=1
while [ $i -le 20 ]               如果 变量i小于20
do                                则循环
        useradd stu$i             useradd stu$1  创建用户  用户名为stu1-20
        echo "123456" | passwd --stdin stu$i   修改密码
 let i++                          循环方式是i每次比上一个值+1
Done                              结束

小白到运维工程师自学之路 第五十集 (shell脚本语句基本使用)_第5张图片

查看现有的用户

小白到运维工程师自学之路 第五十集 (shell脚本语句基本使用)_第6张图片

 小白到运维工程师自学之路 第五十集 (shell脚本语句基本使用)_第7张图片

小白到运维工程师自学之路 第五十集 (shell脚本语句基本使用)_第8张图片

 4、case控制服务的基本应用

case的语法格式:

case 变量值 in

模式1)

;;

模式2)

;;

*)

默认命令序列

esac

使用case写一个控制vsftpd服务脚本

#!/bin/bash
#chkconfig:35 80 21                  35表示init3 init5 80表示作为第80个程序启动 21表示端口
case "$1" in                         定义变量
start)
echo "正在启动vsftpd"
;;
stop)
echo "正在停止vsftpd"
;;
restart)
echo "正在重新启动vsftpd"
;;
*)
echo "用法:$0{start|stop|restart}"
esac

小白到运维工程师自学之路 第五十集 (shell脚本语句基本使用)_第9张图片

测试脚本(这里如果想要使用脚本启动源码安装的软件 需要把脚本移动到 /etc/init.d/   并赋予执行权限)

小白到运维工程师自学之路 第五十集 (shell脚本语句基本使用)_第10张图片

 以上就是shell脚本的基本使用方法

如有错误欢迎各位大佬批评指正,我们共同进步

 

你可能感兴趣的:(运维)