测试工程师需要了解的shell变量知识
Posted zyjimmortalp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试工程师需要了解的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
- 无条件生效 ${变量名+默认值} 如果是否有指向内容,都输出默认值
欢迎大家去 我的博客 瞅瞅,里面有更多关于测试实战的内容哦!!
以上是关于测试工程师需要了解的shell变量知识的主要内容,如果未能解决你的问题,请参考以下文章