欢迎访问个人博客
什么是变量
本地变量: 手动定义的, 在当前系统的某个环境下才能生效, 作用范围小
普通变量:
单引号: 原字符输出, 变量名 ='变量值'
- 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
无条件生效 ${变量名 + 默认值} 如果是否有指向内容, 都输出默认值
欢迎大家去 我的博客 https://www.immortalp.com/ 瞅瞅, 里面有更多关于测试实战的内容哦!!
来源: https://www.cnblogs.com/zyjimmortalp/p/12578648.html