14、Shell脚本中的变量比较、模式匹配、正则表达式及循环操作

Shell脚本中的变量比较、模式匹配、正则表达式及循环操作

1. 变量长度与相等性测试

在进行变量测试时,我们使用“has any length”这一表述。有两类变量没有长度:一类是被设置为空字符串的变量,另一类是根本未被设置的变量。测试时不区分这两种情况,只关注变量中是否有字符。

在使用 "$VAR" 表达式时,给它加上引号很重要。因为如果不加引号,用户的奇怪输入可能会扰乱语法。例如,若 $VAR 的值为 x -a 7 -lt 5 ,且 $VAR 周围没有引号,那么表达式 if [ -z $VAR ] 在变量替换后会变成 if [ -z x -a 7 -lt 5 ] ,这虽然是一个更复杂测试的合法语法,但结果并非你想要的(即不是基于字符串是否有字符)。

当要检查两个shell变量是否相等时,有 -eq = (或 == )两种不同的测试运算符。选择使用哪个运算符取决于比较的类型:
- 使用 -eq 运算符进行数值比较。
- 使用相等运算符 = (或 == )进行字符串比较。

以下是一个简单的脚本来展示这种情况:

#!/usr/bin/env bash
# cookbook filename: strvsnu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值