码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • shell脚本测试


    目录

    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命令

    1. echo "Enter two numbers"
    2. read x
    3. read y
    4. sum=`expr $x + $y`
    5. echo "Sum = $sum"

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

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

    数值比较符号

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

     2.比较两个是否相等

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

     逻辑判断脚本输入内容

    1. #! /bin/bash
    2. read -p "pls input a char:" var1
    3. #逻辑条件的测试
    4. [ "$var1" -eq "1" ]&&{
    5. echo $var1
    6. exit 0
    7. }
    8. [ "$var2" = "2" ]&&{
    9. echo $var1
    10. exit 0
    11. }
    12. ##只能输入1or2
    13. [ "$var1"!="2" -a "$var1" != "1" ]&&{
    14. echo "脚本出错,必须输入1或者2"
    15. exit 1
    16. }

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

    1. #! /bin/bash
    2. # 判断脚本目录是否存在
    3. path=/root/shellData
    4. #1.条件判断
    5. [ ! -d "$path" ] && mkdir $path -p
    6. #2.开发脚本正常逻辑
    7. cat <<END
    8. 1.install 1
    9. 2.install 2
    10. 3.exit
    11. pls input the num you want
    12. END
    13. read -p "pls select num:" num
    14. #3.判断
    15. [ "$num" -eq "1" ] && {
    16. echo "starting inalling 1 ..."
    17. sleep 2;
    18. #判断是否有文件执行权限
    19. [ -x "$oath/lamp.sh" ] || {
    20. echo "not exec"
    21. exit 1
    22. }
    23. source $path/lamp.sh
    24. exit $?
    25. }
    26. #4.退出
    27. [ "$num" -eq 3 ]&&{

    if条件处理

     开发内存检测脚本

     1.查看当前可用内存

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

    如何检测服务状态

    命令:

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

    2.ss -tunlp|greo xxx 

    3.lsof -i tcp:3306

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

    1. nmap 82.157.198.247 -p 3306 |grep open
    2. 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状态

    1. #! /bin/bash
    2. if [ `echo -e "\n" |telnet 82.157.198.247 3306 2>/dev/null | grep Connected |wc -l` -eq "1" ]
    3. then
    4. echo "Mysql is running"
    5. else
    6. echo "Mysql is stopped."
    7. docker start mysql
    8. 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博客

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

    sed命令

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

    1. echo sksksksksksk | sed 's/sk/SK/2g'
    2. skSKSKSKSKSK
    3. echo sksksksksksk | sed 's/sk/SK/3g'
    4. skskSKSKSKSK
    5. echo sksksksksksk | sed 's/sk/SK/4g'
    6. skskskSKSKSK

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

  • 相关阅读:
    java基于Springboot+vue的旅游景点酒店预定管理系统 element
    20k招的工程师刚加入团队,4行代码写3个NPE异常,服了!
    Mac M1采用docker安装工具
    VUE + 小程序 关于前端循环上传附件页面卡死的问题
    Go HTTP 调用(下)
    【K8S】集群组件有什么?每个作用是什么?各组件之间关系
    【LeetCode】Day129-组合总和 II
    Python alpine镜像设置时区解决日志时间错误问题
    众和策略:美国芯片出口管制升级,万亿AI巨头回应!一度跌超7%
    【机器学习】基于多元时间序列对高考预测分析案例
  • 原文地址:https://blog.csdn.net/weixin_57128596/article/details/127794000
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号