Linux基础——变量

变量

  • 变量是什么?
  • 变量定义
  • 环境变量(全局变量)
  • 变量读取——read
  • 变量声明——declare/typeset
  • 变量运算
  • 变量删除
  • 变量替换
  • 变量判空赋值

变量是什么?

变量指的是系统中可改变的量

变量定义

  • 使用=连接,=两边不能有空格
  • 由字母和数字组成,但开头不能为数字
    在这里插入图片描述
  • 若=右边有空格," 可保证特殊字符原本属性,而 ’ 内的特殊字符仅为一般字符,如下
    Linux基础——变量_第1张图片
  • 可用 \ 转义特殊字符,如下转义空格
    在这里插入图片描述
  • 当变量需要借助其他指令时,可用 `括起来或者$
    Linux基础——变量_第2张图片
  • 扩充变量即直接为其赋值,但不能影响其旧值
    Linux基础——变量_第3张图片
  • 若变量要被子程序使用,可通过export将变量变成环境变量
  • 取消变量使用命令 unset

环境变量(全局变量)

系统环境变量在linux中为 PATH,由冒号分隔,记录了命令的存储路径
在这里插入图片描述
其他环境变量可通过 env 显示
Linux基础——变量_第4张图片
命令 set 也可查看所有变量,此外与bash有关的变量也会被列举出来,此外set还可用于设置环境,加上参数 -u 表示变量为空是提示错误信息,-v表示信息被输出前会先原信息,-x表示指令被执行前,会显示指令内容
Linux基础——变量_第5张图片

  • 环境变量 $ 是当前shell的PID
    在这里插入图片描述
  • 环境变量 ? 为上一条命令或程序的返回值,正常情况为0
    Linux基础——变量_第6张图片

export除了可看自定义变量变成环境变量外,还可列出当前环境变量
Linux基础——变量_第7张图片

变量读取——read

命令 read 可从键盘中读取字符赋值变量,-p 后面接上提示,-t 接上等待秒数
在这里插入图片描述

变量声明——declare/typeset

命令 declare/typeset 用于声明变量类型,-a为数组,-i为整型,-x为环境变量,-r为只读变量,不加参数输出所有变量,-p显示变量类型,+为相反,如下是对数组的定义
在这里插入图片描述

变量运算

默认变量为字符串型,对其的 ±*/ 并不会生效,需要将其声明为整型
Linux基础——变量_第8张图片
此外整型计算还可以通过 (()) 里面放计算公式
在这里插入图片描述
而浮点型的计算则需要借助命令 bc完成
在这里插入图片描述

变量删除

设置方式 功能
${var#key} 从左往右查找key,删除最短匹配内容
${var##key} 从左往右查找key,删除最长匹配内容
${var%key} 从右往左查找key,删除最短匹配内容
${var%%key} 从右往左查找key,删除最长匹配内容

在#后面加上要删除的内容,从前往后查找
Linux基础——变量_第9张图片
#和##搭配通配符*,分别表示删除最短匹配内容和最长匹配内容
在这里插入图片描述

变量替换

设置方式 功能
${var/key/newkey} 从左往右查找第一个key,替换为newkey
${var//key/newkey} 从左往右查找所有key,替换为newkey

Linux基础——变量_第10张图片

变量判空赋值

设置方式 若test为空 若test=“” 若test为非空字符串 总结
var=${test-str} var=str var=“” (不变) var=$test - 可覆盖空
var=${test:-str} var=str var=str var=$test :- 可覆盖空及""

如下,若name为空,则name=song,若name不为空,则对name的设置无效
Linux基础——变量_第11张图片
如下,若name='“,- 对name设置无效,加上 : 才可以对”"赋值
Linux基础——变量_第12张图片

设置方式 若test为空 若test=“” 若test为非空字符串 总结
var=${test+str} var为空 (不变) var=str var=str + 可覆盖非空
var=${test:+str} var为空 var=“” var=str :+ 可覆盖非空但不包括""

如下为""时,+生效,:+不生效
Linux基础——变量_第13张图片

设置方式 若test为空 若test=“” 若test为非空字符串 总结
var=${test=str} var=test=str test=“”(不变)
var为空
var=$test = 覆盖空并改变判断值
var=${test:=str} var=test=str var=test=str var=$test := 覆盖空及""并改变判断值

如下当name2=“”,=不生效,:=生效
Linux基础——变量_第14张图片

设置方式 若test为空 若test=“” 若test为非空字符串 总结
var=${test?str} str输出stderr var=“”(不变) var=$test ? 为空输出错误信息
var=${test:?str} str输出stderr str输出stderr var=$test :? 为空及""输出错误信息

如下当name2=“”,?不生效,:?生效
Linux基础——变量_第15张图片

你可能感兴趣的:(#,Linux基础,linux,运维,ubuntu)