欢迎访问个人博客

什么是变量

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

    • 普通变量:

      • 单引号:原字符输出,变量名=‘变量值’
      ➜  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
    • 无条件生效 ${变量名+默认值} 如果是否有指向内容,都输出默认值

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

测试工程师需要了解的shell变量知识的更多相关文章

  1. Shell变量知识进阶

    一,Shell中特殊且重要的变量 $0结合dirname和basename分别取出脚本名称和脚本路径 [root@192-168-3-163 scripts]# cat test.sh #!/bin/ ...

  2. 第三章:shell变量知识进阶

    特殊变量:位置变量大于9的时候,需要加上(),例如$(10)$*获取脚本的所有参数,如果不加""和$@是一样的效果,如果加上"",则表示所有参数组成一个字符串$ ...

  3. Shell 变量知识

    1.自定义变量:自定义变量不能以数字开头. ()root#a=’cd /etc/’ #设置自定义变量. root#etho $a #使用变量. 2.全局变量:export可设置全局变量不能以数字开头. ...

  4. CISP-PTE注册信息安全专业人员渗透测试工程师知识体系大纲

    CISP-PTE注册信息安全专业人员渗透测试工程师知识体系大纲 都是图.. 不足之处,欢迎补充

  5. SHELL (3) —— 变量知识进阶和实践

    摘自:Oldboy Linux运维——SHELL编程实战 SHELL中特殊切重要的变量 位置变量 作用说明 $0 获取当前执行的Shell脚本的文件名,如果执行脚本包含了路径,那么就包括脚本路径 $n ...

  6. SHELL (2) —— Shell变量的核心基础知识和实践

    摘自:Oldboy Linux运维——SHELL编程实战 Shell变量:用一个固定的字符串(也可能是字符.数字等的组合)代替更多.更复杂的内容,该内容里可能还会包含变量.路径.字符串等其它的内容. ...

  7. 测试工程师,选择python还是java?

    问:“你平时工作中,用java多还是用python多”? 答:“都还可以,根据具体的场景选择不同的语言”. 问:“比如说呢”? 答:“开发自己的测试平台,肯定会选择java:在centos服务器跑一些 ...

  8. 年薪30W测试工程师成长之路,你在哪个阶段?

    对任何职业而言,薪资始终都会是众多追求的重要部分.前几年的软件测试行业还是一个风口,随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业,目前软件测试行业“缺口”已经基本饱和.当然,我说的是最基础 ...

  9. 《Linux shell变量总结回顾》RHEL6(转)

    文章版权:http://www.cnblogs.com/linux-super-meng/ 环境变量路径: [root@localhost ~]# set   //查看到的是局部变量和全局变量2种 [ ...

随机推荐

  1. 添砖加瓦:几种常见的数据摘要算法(MD5、CRC32、SHA1和SHA256)

    1.算法概述 数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名.数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密.数据摘要算法也被称为哈希(H ...

  2. 分析Java中的length和length()

    在不适用任何带有自动补全功能的IDE的情况下,我们怎么获取一个数组的长度?如何获取字符串的长度? 这里我们先举用实例去分析一下:int[] arr=new int[3]:System.out.prin ...

  3. Jquery 实现原理深入学习(3)

    前言 1.总体结构 √ 2.构建函数 √ 3.each功能函数实现 √ 4.map功能函数实现 √ 5.sizzle初步学习 6.attr功能函数实现 7.toggleClass功能函数实现(好伤) ...

  4. IPC thread写法太晦涩

    主要用到TLS,首次进入gHaveTLS为false,锁保护说明此函数很多其他函数在调用.通过if (pthread_key_create(&gTLS, threadDestructor) ! ...

  5. GDB调试系列之了解GDB

    想要熟练利用GDB进行程序调试,首先要了解什么是GDB. 1. 什么是GDB GDB (the GNU Project Debugger) 是一个可以运行在大多数常见的UNIX架构.Windows.M ...

  6. 曹工说Spring Boot源码(22)-- 你说我Spring Aop依赖AspectJ,我依赖它什么了

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  7. mongoDb性能提升

    最近在弄MongoDB的时候 发现只按照官网的方式进行操作的话,性能不行,想着用单例模式封装一下,提升一下性能,代码如下: //引入mongodb相关的模块 const MongoClient = r ...

  8. CentOS7.5源码编译安装mysql5.7.29

    #查看系统版本 [root@ctos3 ~]# cat /etc/redhat-release CentOS Linux release (Core) #下载源码包,需要注意的是mysql5.7 编译 ...

  9. Golang 使用Protocol Buffer 案例

    目录 1. 前言 2. Protobuf 简介 2.1 Protobuf 优点 2.2 Protobuf 缺点 2.3 Protobuf Golang 安装使用 3. Protobuf 通讯案例 3. ...

  10. 编程史话第四期-饱受争议的前端之王JavaScript的血泪成长史

    写在前面 这篇博文主要介绍javaScript的发展史,根据作者在B站发布的同名视频的文案整理修改而成,对视频感兴趣的博友可访问https://www.bilibili.com/video/av945 ...