Linux基础——变量

本文详细介绍了Linux shell脚本中变量的定义、读取、声明、运算、删除以及替换等操作。讲解了环境变量的使用,如通过export设置全局变量,并展示了如何检查和管理环境变量。还探讨了变量的空值处理和不同类型的变量声明,如只读变量和数组。此外,文章还涵盖了字符串操作,包括删除和替换字符串内容的方法。
摘要由CSDN通过智能技术生成

变量是什么?

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

变量定义

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

环境变量(全局变量)

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

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

export除了可看自定义变量变成环境变量外,还可列出当前环境变量
在这里插入图片描述

变量读取——read

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

变量声明——declare/typeset

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

变量运算

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

变量删除

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

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

变量替换

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

在这里插入图片描述

变量判空赋值

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

如下,若name为空,则name=song,若name不为空,则对name的设置无效
在这里插入图片描述
如下,若name='“,- 对name设置无效,加上 : 才可以对”"赋值
在这里插入图片描述

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

如下为""时,+生效,:+不生效
在这里插入图片描述

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

如下当name2=“”,=不生效,:=生效
在这里插入图片描述

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

如下当name2=“”,?不生效,:?生效
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值