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
超级会员免费看
订阅专栏 解锁全文
2124

被折叠的 条评论
为什么被折叠?



