shell脚本测试
创始人
2024-04-07 04:21:42
0

目录

test命令进行测试 

1.比较大小

 2.关于文件的权限检测(-x常用)

3.1测试文件是否存在(-f,-d)

 4.多种条件的判断(-a -o常用)

5.判断字符串是否相等

expr命令

数值比较符号

 逻辑判断脚本输入内容

根据条件进行对应的测试安装

if条件处理

 开发内存检测脚本

如何检测服务状态

 远程监控mysql(nmap端口扫描)

 echo相关知识点: 

|作为管道符:前面的输出相当于后面的输入

>和>>和/dev/null的理解

检测mysql状态

 Rsync脚本

 Shell中$0、$1、$2、$?、$!、$$、$*、$#、$@的含义


 

test命令进行测试 

1.比较大小

 

 测试执行文件,后序用$?去判断即可

 2.关于文件的权限检测(-x常用)

3.1测试文件是否存在(-f,-d)

test -e mysql.sh && echo "该文件是存在的" || echo "该文件不存在"

 3.2判断是否是普通文件还是目录类型(-f , -d)

test -d hello && echo "OK" || echo "NO"

 3.3判断文本中是否有内容(-n判断是否有内容)

test -n " " && echo OK || echo NO

3.3判断是否有该文件并且用test命令做兜底处理([ -f  "xxx"]判断)

[ -f "Fairy同学.png" ] && echo "Fairy同学.png已经存在" || touch Fairy同学.png && echo "创建完毕"

 3.4权限的判断([ -r "大碗宽面.txt" ] && cat 大碗宽面.txt || echo "阅读失败没有权限")

 4.多种条件的判断(-a -o常用)

5.判断字符串是否相等

[ "${name2}"="Fox" ]&&echo ok || echo no

 我们也可以结果取反

[ ! "${name2}"="Fox" ]&&echo ok || echo no

expr命令

echo "Enter two numbers"
read x 
read y
sum=`expr $x + $y`
echo "Sum = $sum"

一般用于计算指定的表达式,并且给定输出 

(64条消息) expr命令_WindrunnerMax的博客-CSDN博客

数值比较符号

双中符号不需要转义符,而那种普通的是需要转移符号的,单中符号需要+转义符\

 2.比较两个是否相等

[[ -n "$a" && "$a" = "$b" ]] && echo yes || echo no

 逻辑判断脚本输入内容


#! /bin/bashread -p "pls input a char:" var1#逻辑条件的测试
[ "$var1" -eq "1" ]&&{echo $var1exit 0
}[ "$var2" = "2" ]&&{echo $var1exit 0
}##只能输入1or2
[ "$var1"!="2" -a "$var1" != "1" ]&&{echo "脚本出错,必须输入1或者2"exit 1
}

根据条件进行对应的测试安装

#! /bin/bash# 判断脚本目录是否存在
path=/root/shellData#1.条件判断
[ ! -d "$path" ] && mkdir $path -p#2.开发脚本正常逻辑
cat <

if条件处理

 开发内存检测脚本

 1.查看当前可用内存


#! /bin/bashFreeMem=`free -m |awk 'NR==2 {print $NF}'`
CHARS="Current memory is $FreeMem"if [ "$FreeMem" -lt "2100" ]thenecho $CHARS|tee /root/message/message.txt#发送邮件给到用户echo '内存不足'| mail -s "`date +%F-%T`$CHARS"  746879613@qq.comecho "内存不足,抓住维护服务器"
fi

如何检测服务状态

命令:

1.netstat  -tunlp|grep 服务 | wc -l

2.ss -tunlp|greo xxx 

3.lsof -i tcp:3306

 远程监控mysql(nmap端口扫描)

nmap 82.157.198.247 -p 3306 |grep open
nmap 82.157.198.247 -p 3306 |grep open|wc -l

telnet命令也可以判断端口是否可以远程 

telnet ip 端口

 echo相关知识点: 

Linux中如何使用echo命令?(用法详解)-linux运维-PHP中文网

|作为管道符:前面的输出相当于后面的输入

linux中竖线'|',双竖线‘||’,&和&&的意思 - 星朝 - 博客园 (cnblogs.com)

>和>>和/dev/null的理解

(64条消息) Shell中 2>/dev/null_小悟空爱吃桃的博客-CSDN博客_2>/dev/null

检测mysql状态

#! /bin/bash
if [ `echo -e "\n" |telnet 82.157.198.247 3306 2>/dev/null | grep Connected |wc -l` -eq "1" ]thenecho "Mysql is running"
elseecho "Mysql is stopped."docker start mysql
fi

mysql服务正在启动 

 Rsync脚本

 Shell中$0、$1、$2、$?、$!、$$、$*、$#、$@的含义

$0 就是编写的shell脚本本身的名字
$1 是在运行shell脚本传的第一个参数
$2 是在运行shell脚本传的第二个参数
$$ Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)

$! Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)
$? 最后运行的命令的结束代码(返回值),即执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示Shell使用的当前选项,与set命令功能相同
∗ 所 有 参 数 列 表 , 如 " * 所有参数列表,如"∗所有参数列表,如"*" 用["],括起来的情况,以"$1" “2 " . . . . " 2" ...."2"...."n” 的形式输出所有参数,
@ 所 有 参 数 列 表 。 如 " @ 所有参数列表。如"@所有参数列表。如"@“用「”」括起来的情况、以"$1" “2 " … " 2" … "2"…"n” 的形式输出所有参数。
@ 跟 @ 跟@跟*类似,但是可以当作数组用
$# 添加到Shell的参数个数
(64条消息) Shell中$0、$1、$2、$?、$!、$$、$*、$#、$@的含义_听说唐僧不吃肉的博客-CSDN博客

#!/bin/sh
echo "shell脚本名称: $0"
echo "传到shell的第一个参数: $1"
echo "传到shell的第二个参数: $2"

sed命令

功能:能够结合正则表达式对文件进行操作,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容

 echo sksksksksksk | sed 's/sk/SK/2g' skSKSKSKSKSKecho sksksksksksk | sed 's/sk/SK/3g'skskSKSKSKSK  echo sksksksksksk | sed 's/sk/SK/4g'skskskSKSKSK

Linux之sed命令详解 - zakun - 博客园 (cnblogs.com)

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...