shell脚本测试

article/2025/9/17 11:13:57

目录

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 <<END1.install 12.install 23.exitpls input the num you want
ENDread -p "pls select num:" num#3.判断
[ "$num" -eq "1" ] && {echo "starting inalling 1 ..."sleep 2;#判断是否有文件执行权限[ -x "$oath/lamp.sh" ] || {echo "not exec"exit 1}source $path/lamp.shexit $?
}#4.退出
[ "$num" -eq 3 ]&&{

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)


http://chatgpt.dhexx.cn/article/HHPaNqM7.shtml

相关文章

【Cmake】Ctest测试工具

目录 前言 一、初识CTest 二、使用方法 三、完整的简单测试工程 附录 附录一 cmake命令 enable_testing add_test 前言 原文&#xff1a;CTest - https://www.cnblogs.com/457220157-FTD/p/4139149.html 一、初识CTest CTest是CMake集成的一个测试工具&#xff0c;在使…

软件测试常见面试题

1、软件的含义 程序、数据以及相关文档的集合。 2、测试与调试的区别是什么&#xff1f; 测试是测试人员进行&#xff0c;主要目标是发现、报告、跟踪缺陷&#xff1b; 调试是开发人员进行&#xff0c;主要目标是定位缺陷位置、分析缺陷原因、修复缺陷。 3、IEEE是什么意思…

Web服务稳定性测试 负载测试 可靠性测试 方案 测试报告

注&#xff1a; 1. 程序员做的测试 2. 测试报告文档原稿在上传审核中&#xff0c;请等待 审核好了&#xff1a;https://download.csdn.net/download/yiquan_yang/12694138 1 概述 1.1 背景 系统的稳定性是系统长期稳定运行能力&#xff0c;需要时间累积才能度量。平台的某些问…

NFC测试

NFC功能点介绍&#xff1a; NFC英文全称Near Field Communication&#xff0c;近距离无线通信。 NFC采用主动和被动两种读取模式&#xff0c;NFC应用模式分为三种&#xff1a; 1、NFC卡模式&#xff08;被读模式&#xff0c;手机终端可以模拟成为一张普通的非接触卡被pos机读取…

Python 接口并发测试详解

一、接口并发测试简介 1、性能测试简介 性能测试是通过自动化测试工具模拟多种正常、峰值及异常负载条件对系统的各项性能指标进行的测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,…

jmeter测试工具

文章目录 参考文章jmeter接口验签tomcat最大连接数jmeter参数彻底理解jmeter的ramp-up参数总结说明 持续时间的使用场景彻底理解ramp up2循环次数ramp-up线程数循环次数&#xff08;永远&#xff09;持续时间同步器里面的Timeout in milliseconds参数线程组参数 版本缺陷记录jm…

点餐系统测试

一、设计测试用例 二、提交BUG a)BUG 一 标题:兼容性差&#xff0c;只能在Chrome浏览器和火狐浏览器上使用 1.版本号&#xff1a;V0009 2.测试环境&#xff1a;Chrome 浏览器 版本号 96.0.4664.45 火狐 浏览器 版本号 97.0.1 操作系统&#xff1a;win10 3.测试数据…

接口 测试

一.接口概念 1.什么是接口(API) 接口:接口是为了提供一种服务 所有的接口统称为API,接口分为内部接口和外部接口 外部接口:测试被测系统和外部系统之间的接口 测试内部接口: 1.内部接口提供内部系统使用:开发人员自己开发的对自身系统提供的接口) 2.内部接口提供外部系统使用:…

Visual Studio 2017 15.8 正式发布,测试速度提高 82%

Visual Studio 2017 15.8 版本已正式发布&#xff1a; 发行说明&#xff1a;https://docs.microsoft.com/zh-cn/visualstudio/releasenotes/vs2017-relnotes#15.8下载地址&#xff1a;https://visualstudio.microsoft.com/downloads/ 安装 现可选择在开始安装之前下载所有安装文…

跟LintCode的算法题杠上了(82落单的数)

前言 今天闲来无事准备刷个算法题&#xff0c;缓解一下办公室尴尬的气氛&#xff0c;放松一下&#xff0c;谁知我竟然跟这题杠上了&#xff0c;我必须得好好研究一下&#xff0c;哈哈 题目 点击进入lintcode&#xff0c;第82题落单的数 给出 2 * n 1个数字&#xff0c;除其…

扫码登陆

一个扫码登录的流程图记录一下

PC网站实现微信扫码登录功能(二)

上篇我们介绍了怎么申请账号以及最后拿到appId和appSecret,如果有不清楚的可以看一下 PC网站实现微信扫码登录功能&#xff08;一&#xff09; 下面我就来说一下怎样在PC端怎么实现扫码登录功能。 一、进入官方文档网站 准备工作 | 微信开放文档 其实官网对过程描述的已经…

微信扫描二维码快速登录网站

在近期的一个项目中用到了微信扫描注册、登录网站功能所以整理了下希望对读者有帮助。 首先&#xff0c;你需要有一个没有绑定微信、微信公众平台的邮箱注册成为微信开放平台开发者&#xff0c;在管理中心创建移动应用、或者网站应用获得appid和AppSecret&#xff0c;申请微信…

微信扫码登录功能实现

原因&#xff1a;很简单&#xff0c;公司的账号登录需要用到微信扫码登录与QQ的登录功能&#xff0c;所以&#xff0c;在做好了微信的扫码登录之后&#xff0c;本人就写这篇微信扫码登录功能实现的教程 教程开始 需要用到的网站&#xff1a; https://open.weixin.qq.com/ 微…

java扫码登录

这篇博文主要记录我实现扫码登录的步骤&#xff0c;及代码。其实之前从网上搜了很久扫码登录&#xff0c;copy版很多&#xff0c;所以回答也就那几种。 我把我自己的思路也说一下吧。如果有更好的意见或者我有不对的地方&#xff0c;请指出。 首先说一下我用的技术&#xff0…

微信公众号开发—扫描二维码实现登录方案

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; 微信公众号开发—扫描二维码实现登录方案 ⏱️ 创作时间&#xff1a; …

第三方登录之微信扫码登录

文章目录 1. 申请微信接入&#xff1a;2. 项目环境搭建&#xff1a;3.后端Controller接口&#xff1a;4.HTML页面代码&#xff1a;5.测试结果&#xff1a;6.补充说明&#xff1a; 小伙伴们有各种疑问可以去参考官方文档进行详细的学习下 微信开发文档 &#xff0c;此次介绍的将…

扫码登录操作过程

转载自http://justcoding.iteye.com/blog/2213661浏览器输入&#xff1a;https://wx.qq.com/?langzh_CN手机登录微信&#xff0c;利用“扫一扫”功能扫描网页上的二维码手机扫描成功后&#xff0c;提示“登录网页版微信”&#xff1b;网页上显示“成功扫描 请在手机点击确认以…

实现手机扫描二维码进行登录

项目结构&#xff1a; 实现流程&#xff1a; pc端&#xff1a; 1:打开二维码登录网页index.html 2:index.html调用GetQrCodeServlet 3:GetQrCodeServlet干2件事 a:生成随机的uuid,是一个唯一标识&#xff0c;该标识贯穿整个流程 b:生成二维码图片&#xff0c;二维码信息&#x…