Bash中如何判断字符串为零长度或全为空白字符?
Bash 空白字符串判断实现方案
自定义函数方案
我们可以通过移除字符串内所有空白字符后判断剩余内容长度的逻辑,实现同时兼容空字符串、全空白字符串的判断函数:
is_blank() { # 移除输入参数中所有的空白字符(含空格、制表符、换行、回车等) local trimmed="${1//[[:space:]]/}" # 符合Bash常规布尔返回规则:空白返回0(真),非空白返回1(假) [[ -z "$trimmed" ]] }
使用示例:
- 判断空字符串:
is_blank ""返回0 - 判断全空格字符串:
is_blank " "返回0 - 判断含多种空白字符的字符串:
is_blank $'\t\n\r '返回0 - 判断带有效内容的字符串:
is_blank "hello world"返回1
无需编写函数的实现方案
有两种常用的一行写法可以直接实现需求,不需要额外封装函数:
- 参数扩展 + 长度判断
直接在需要判断的位置移除空白后判断长度即可:
# 变量str为空/全空白时执行后续逻辑 [[ -z "${str//[[:space:]]/}" ]] && echo "输入为空白字符串"
这种方式兼容性最强,支持绝大多数新旧版本的Bash环境。
- 正则匹配
使用Bash的正则匹配规则直接匹配全空白格式:
# 匹配规则:从开头到结尾全是空白字符或没有内容 [[ "$str" =~ ^[[:space:]]*$ ]] && echo "输入为空白字符串"
这种方式写法更直观,适用于Bash 3.0及以上的环境。
内容的提问来源于stack exchange,提问作者Angio
相关产品推荐
相关产品推荐

