zoukankan      html  css  js  c++  java
  • 测试工程师需要了解的shell变量知识

    欢迎访问个人博客

    什么是变量

    • 本地变量:手动定义的,在当前系统的某个环境下才能生效,作用范围小

      • 普通变量:

        • 单引号:原字符输出,变量名=‘变量值’
        ➜  shell name='tom'
        ➜  shell echo $name
        tom
        
        • 双引号:变量名=“变量值”,看一下值当中有没有对其他变量的引用,如果有就获取变量值然后组合到一起输出
        ➜  shell word="I am $name"
        ➜  shell echo $word
        I am tom
        
        • 直接命名不加任何引号:变量名=变量值
        ➜  shell age=33
        ➜  shell echo $age
        33
        
        • 习惯用法:数字不加引号,其他家双引号
      • 命令变量:变量值是命令的变量,会将命令的执行结果赋值给变量

        • 变量名=`命令`,这是反引号
        ➜  shell files=`ll`
        ➜  shell echo $files
        total 8
        -rwxr-xr-x  1 zhouyajun  staff   228B Mar 26 21:58 itcast.sh
        drwx-wx--x  3 zhouyajun  staff    96B Oct 11 22:15 test
        
        • 变量名=$(命令)
        ➜  shell woshishui=$(whoami)
        ➜  shell echo $woshishui
        zhouyajun
        
        • 执行流程:执行命令,将命令执行后的结果复制给新的变量名

    全局变量: 手工加默认方式定义的作用范围最大的变量

    • env 查看所有的全局变量
    • 声明全局变量
      • name=tom, 然后 export name,这就声明为全局变量了
      • export name=tom,直接声明全局变量

    查看、删除变量

    • 查看变量
      • "asd ${变量名}"
      • "${变量名}"
    • 删除--unset 变量名

    内置变量:bash命令中自带的一些参数变量

    • 脚本文件

      • $0 获取当前执行的shell脚本文件名

        #! /bin/bash
        # yy复制,p粘贴
        echo "获取当前文件名:get_name"
        echo "获取当前文件名:$0"
        
        ➜  shell /bin/bash get_name.sh
        获取当前文件名:get_name
        获取当前文件名:get_name.sh
        
      • $n 获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0的时候表示脚本的文件名,如果n大于9就要用大括号括起来${10}

      #! /bin/bash
      echo "获取参数"
      echo "获取命令行参数:$1"
      
      ➜  shell /bin/bash get_args.sh 1 2 3
      获取参数
      获取命令行参数:1
      
      • $# 获取当前执行shell命令行中参数的总个数
      #! /bin/bash
      echo "获取参数"
      echo "获取命令行参数:$#"
      
      ➜  shell /bin/bash get_args.sh 1 2 3 d gf
      获取参数
      获取命令行参数:5
      
      • $? 获取执行上一个指令的返回值(0为成功,非0为失败)

        ➜  shell echo $?  这是上面指令执行结果
        0
        ➜  shell asdfas  这是一条错误指令
        zsh: command not found: asdfas
        ➜  shell echo $?
        127
        
    • 精确获取 ${变量名:其实位置:截取长度},

      • ${file:0:5} 从第一个字符开始,截取5个字符
      • ${file:5:5} 从第6个字符开始截取6个字符
      • ${file:0-6:5} 从倒数第6个字符开始,截取之后的5个字符
      ➜  shell file=abcdefghijklmnopkrstuvwxyz
      ➜  shell echo $file
      abcdefghijklmnopkrstuvwxyz
      ➜  shell echo ${file:0:5}
      abcde
      ➜  shell echo ${file:5:5}
      fghij
      
      ➜  shell echo ${file:0-6:5}
      uvwxy
      
    • 默认值

      • 有条件生效 ${变量名:-默认值},如果变量没有指向的内容就输出默认值
      #! /bin/bash
      a="$1" # 获取命令行第一个参数
      echo "参数的值是: ${a:-1}"  # 设置默认值1
      
      ➜  shell /bin/bash default_value.sh 55
      参数的值是: 55
      ➜  shell /bin/bash default_value.sh
      参数的值是: 1
      
      • 无条件生效 ${变量名+默认值} 如果是否有指向内容,都输出默认值

    欢迎大家去 我的博客 瞅瞅,里面有更多关于测试实战的内容哦!!

  • 相关阅读:
    无线鼠标和无线键盘能不能唤醒睡眠中的电脑的解决方案
    教你如何设置同时上内外网(单网卡或双网卡)
    Oracle_字符集问题(数据库与客户端字符集关联关系)
    关于破解移动宽带光猫 型号: GS3101 超级管理员密码
    Oracle 低版本客户端连接 18c 报ORA-28040 和 ORA-01017 错误的解决方法
    sql语句分组统计出年月日下数据记录数目
    Servlet文件上传
    ActiveMq+zookeeper+levelDB集群整合配置
    mongodb 级联操作查询时,关联条件
    maven插件地址博客园
  • 原文地址:https://www.cnblogs.com/zyjimmortalp/p/12578648.html
Copyright © 2011-2022 走看看