测试工程师需要了解的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变量知识的更多相关文章
- Shell变量知识进阶
一,Shell中特殊且重要的变量 $0结合dirname和basename分别取出脚本名称和脚本路径 [root@192-168-3-163 scripts]# cat test.sh #!/bin/ ...
- 第三章:shell变量知识进阶
特殊变量:位置变量大于9的时候,需要加上(),例如$(10)$*获取脚本的所有参数,如果不加""和$@是一样的效果,如果加上"",则表示所有参数组成一个字符串$ ...
- Shell 变量知识
1.自定义变量:自定义变量不能以数字开头. ()root#a=’cd /etc/’ #设置自定义变量. root#etho $a #使用变量. 2.全局变量:export可设置全局变量不能以数字开头. ...
- CISP-PTE注册信息安全专业人员渗透测试工程师知识体系大纲
CISP-PTE注册信息安全专业人员渗透测试工程师知识体系大纲 都是图.. 不足之处,欢迎补充
- SHELL (3) —— 变量知识进阶和实践
摘自:Oldboy Linux运维——SHELL编程实战 SHELL中特殊切重要的变量 位置变量 作用说明 $0 获取当前执行的Shell脚本的文件名,如果执行脚本包含了路径,那么就包括脚本路径 $n ...
- SHELL (2) —— Shell变量的核心基础知识和实践
摘自:Oldboy Linux运维——SHELL编程实战 Shell变量:用一个固定的字符串(也可能是字符.数字等的组合)代替更多.更复杂的内容,该内容里可能还会包含变量.路径.字符串等其它的内容. ...
- 测试工程师,选择python还是java?
问:“你平时工作中,用java多还是用python多”? 答:“都还可以,根据具体的场景选择不同的语言”. 问:“比如说呢”? 答:“开发自己的测试平台,肯定会选择java:在centos服务器跑一些 ...
- 年薪30W测试工程师成长之路,你在哪个阶段?
对任何职业而言,薪资始终都会是众多追求的重要部分.前几年的软件测试行业还是一个风口,随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业,目前软件测试行业“缺口”已经基本饱和.当然,我说的是最基础 ...
- 《Linux shell变量总结回顾》RHEL6(转)
文章版权:http://www.cnblogs.com/linux-super-meng/ 环境变量路径: [root@localhost ~]# set //查看到的是局部变量和全局变量2种 [ ...
随机推荐
- xampp安装后启动apache出现端口占用问题
apache默认监听电脑80端口,当端口被占用时,xampp无法正常启动apache.我们需要将端口解除占用再启动. xampp报错: Problem detected!19:36:24 [Apach ...
- MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解
.安装环境 .基本环境配置 .Master的配置 .Slave的配置 .添加需要同步的从库Slave .真正的测试 安装环境 1 操作系统 :CentOS 6.5 2 数据库版本:MySQL 5.6. ...
- Stock Starer股票盯盘
一个业余小项目,用于监控指定股票的成交指标,触发事件的主动通知 源码 !https://github.com/jeffchen81/stock-starer 设计说明 场景 定时任务1:通过网上Ope ...
- pattern space and hold space of sed
Copied from: stackoverflow When sed reads a file line by line, the line that has been currently read ...
- 2020年JAVA大厂笔经面经
个人简介 Java后台开发方向. 非计算机专业硕士,专业涉及到一些开发. 实验室项目主要是Java Web系统,挖掘小亮点. 无实习经验. 闲话唠嗑 回顾这几个月,宛若梦一场. 一开始心态不好 ...
- go语言指南之映射练习
练习:映射 实现 WordCount.它应当返回一个映射,其中包含字符串 s 中每个“单词”的个数.函数 wc.Test 会对此函数执行一系列测试用例,并输出成功还是失败. 你会发现 strings. ...
- Apple App签名机制
概览 数字签名 签名机制与验证过程 操作流程 数字签名 摘要算法 将任意长度文本通过一个算法得到一个固定长度的文本. 源文本不同,计算结果必然不同 无法从结果反推源 例如,MD5和SHA算法 非对称加 ...
- Java enum枚举在实际项目中的常用方法
在项目实际开发过程中,经常会遇到对某些固定的值.字典项的定义的需求,很多项目经常使用常量来定义,其实在jdk1.5就已经引入了枚举,使用枚举可以更好的解决这类需求,本文主要记录枚举的优势以及经常在项目 ...
- Web环境从Apache转Nginx后页面报404错误
问题原因: Apache支持伪静态规则在项目的入口目录有个.htaccess文件,Apache默认识别此文件内容, 但是Nginx不识别.htaccess文件,导致伪静态规则失效,从而无法解析url地 ...
- 数据结构 1 线性表详解 链表、 栈 、 队列 结合JAVA 详解
前言 其实在学习数据结构之前,我也是从来都没了解过这门课,但是随着工作的慢慢深入,之前学习的东西实在是不够用,并且太皮毛了.太浅,只是懂得一些浅层的,我知道这个东西怎么用,但是要优化.或者是解析,就不 ...