You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取shell程序中的字符串长度?bash下i2cdetect字符串长度为0排查

问题原因

你写的i2cdetect -y 1 > i2cdetect_string是重定向语法,作用是把命令执行结果输出到名为i2cdetect_string的磁盘文件中,全程没有给同名的shell变量赋值。你后续调用的$i2cdetect_string是一个未定义的空变量,所以计算出来的长度自然为0,和i2cdetect返回的内容有没有特殊字符没有任何关联。
你尝试的数组长度语法也不会生效,本质原因还是变量本身为空,和数据类型无关。

解决方法

方案1:直接把命令结果存入变量

使用shell的命令替换语法捕获命令输出到变量,不需要经过文件中转:

# 命令替换用$()包裹要执行的命令
i2cdetect_string=$(i2cdetect -y 1)
# 此时就能正常获取字符串长度
echo "The i2cdetect_string length is: ${#i2cdetect_string}"

方案2:从已生成的文件中读取内容计算长度

如果你确实需要先把结果保存为文件,可以先读取文件内容到变量再计算长度,也可以直接用wc命令统计文件字符数:

# 方法1:读取文件内容到变量后计算长度
i2cdetect_content=$(<i2cdetect_string)
echo "内容长度是:${#i2cdetect_content}"

# 方法2:直接统计文件的总字符数
echo "文件总字符数是:$(wc -c < i2cdetect_string)"

内容的提问来源于stack exchange,提问作者Eebigdog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:48:02