linux shell 变量为空,4. linux shell 变量扩展:测试存在性及空值

我们在写脚本的时候,必须要使用某个变量,如果这个 变量没有定义的的话,那么我们就要给他强制赋值linux shell shell编程 shell脚本 shell视频

我们可以使用set -u 在使用变量之前先检查是否定义过这个变量,如果没有定义那么就报错

f7d6b60c230afc5f0eb19b2a1618cd1a.png

测试:

${变量-值} 不存在 ,不判断是否为空

如果变量不存在的话,那么就用后面的值来替代

f7d6b60c230afc5f0eb19b2a1618cd1a.png

如果有值的话,就使用自身的值

${变量:-值} 不存在或者空

如果变量存在(不能是空),那么就直接使用这个变量的值,如果变量为未定义或者为空,那么将使用-后面的值

f7d6b60c230afc5f0eb19b2a1618cd1a.png

f7d6b60c230afc5f0eb19b2a1618cd1a.png

${变量:+值} 非空则带入值

如果变量非空的话,那么则带入后面的值

f7d6b60c230afc5f0eb19b2a1618cd1a.png

因为aa有值,所以就会把123赋值给bb

${变量:=值} 不存在或空 默认

如果变量是空或者不存在,那么将把后面的值赋值给变量,而且当成默认值。看到的效果和${变量:-值}效果一样的

f7d6b60c230afc5f0eb19b2a1618cd1a.png

${变量:?’信息’} 不存在或空,显示信息

如果变量不存在或者是空,那么将显示?后面的信息,这个信息要使用‘’引起来

f7d6b60c230afc5f0eb19b2a1618cd1a.png

用来测试一个变量是否被定义过,如果没有定义或者为控制,那么我们可以自定义报错信息。

如果说变量的值是存在的,那么将使用这个值

写一个小脚本,这个脚本后面必须要跟上一个参数,如果没有参数那么就有这样的报错的信息“此脚本 (指定脚本名) 必须要跟上一个参数”

f7d6b60c230afc5f0eb19b2a1618cd1a.png

例子:

写个脚本,让你输入自己的年龄,如果输入了年龄,那么就显示年龄,如果没有输入的话,那么这个年龄就显示为‘保密’

f7d6b60c230afc5f0eb19b2a1618cd1a.png

f7d6b60c230afc5f0eb19b2a1618cd1a.png

截取:

有时一个变量的值会很长,但是我们并不需要完整一个值:

aa=123456

${变量:offset} 去除前面几个字符

offset是一个数字n,也就是把变量前n个的值去掉

f7d6b60c230afc5f0eb19b2a1618cd1a.png

就把aa这个变量前面的几个值给去除了

${变量:offset:长度} 去除前几个字符取几位

offset也是一个数字n,长度假设值m,意思就是把这个变量所代表的值的前n部分去除,然后取得生效部分的m个字符

f7d6b60c230afc5f0eb19b2a1618cd1a.png

首先把aa的前两个字符删除,剩下3456,然后取两个字符结果就是34

${变量%模式} 从后最短删除

把这个变量所代表的值从后面开始删,删除匹配%后面的模式

f7d6b60c230afc5f0eb19b2a1618cd1a.png

${变量%%模式} 从后最长删除

从后面开始删除,匹配%%后面的模式的内容,而且是尽量长的删

f7d6b60c230afc5f0eb19b2a1618cd1a.png

${#变量} 变量值的长度

用来计算变量所代表值得长度,也就是字符数

f7d6b60c230afc5f0eb19b2a1618cd1a.png

f7d6b60c230afc5f0eb19b2a1618cd1a.png

${变量#模式} 从前最短删除

把变量所表示的值前面的删除,删除#后面所匹配的部分,最短删除

f7d6b60c230afc5f0eb19b2a1618cd1a.png

从aa最前面最短匹配的root给删除了

${变量##模式} 从前最长删除

f7d6b60c230afc5f0eb19b2a1618cd1a.png

例子:加入我现在有一个文本,这里面包含了很多个网页的地址,现在要求统计出来这些网站的名的名字:

f7d6b60c230afc5f0eb19b2a1618cd1a.png

f7d6b60c230afc5f0eb19b2a1618cd1a.png

${变量/符号1/符号2}替换

这句话的意思是变量中的第一个符号1替换成符号2

f7d6b60c230afc5f0eb19b2a1618cd1a.png

${变量//符号1/符号2}

f7d6b60c230afc5f0eb19b2a1618cd1a.png

例子:加入一个文本上有很多的电子邮件

aa#aa.com (请自动把#换成@)

f7d6b60c230afc5f0eb19b2a1618cd1a.png

${变量/符号/} 删除

把变量中第一个符号删除

f7d6b60c230afc5f0eb19b2a1618cd1a.png

${变量//符号/}

f7d6b60c230afc5f0eb19b2a1618cd1a.png

${!aa@}列出aa开头的变量

把系统中以aa开头的变量全部列出来

f7d6b60c230afc5f0eb19b2a1618cd1a.png

f7d6b60c230afc5f0eb19b2a1618cd1a.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值