测试工程师需要了解的 shell 变量知识

本贴最后更新于 1825 天前,其中的信息可能已经沧海桑田

什么是变量

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

    • 普通变量:

      • 单引号:原字符输出,变量名=‘变量值’
      ➜ 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

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    124 引用 • 74 回帖
  • 测试开发
    11 引用 • 5 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...