使用Bash脚本检测空行并输出行号失败,求排查方案
问题分析与修复
你的脚本没有输出,核心原因是read -r读取每行时会自动剔除行尾的换行符。文本里的空行被读取后,$line变量的值是空字符串,而非你判断的$'\n\n',导致条件永远不触发。
修复后的脚本
input="./input.txt" declare -i count=0 while IFS= read -r line; do ((count++)) # 检查当前行是否为空字符串 if [ -z "$line" ]; then echo "$count" fi done < "$input"
补充说明
[ -z "$line" ]是Bash里判断字符串为空的标准写法,比[ "$line" == "" ]更简洁可靠。- 完全保留了你原有的循环结构,后续可以直接在循环内或条件块里添加其他逻辑。
内容的提问来源于stack exchange,提问作者thomasbishop
相关产品推荐
相关产品推荐

