Bash脚本echo输出换行异常:如何实现目标单行输出
问题:脚本输出多出换行,如何实现指定格式输出?
- 期望输出:
<strong>3 number of line detected</strong> - 实际输出:
<strong>3</strong> <strong>number of line is detected.</strong> - 原脚本代码:
linecount= awk '{/^./ && c++};END{print c}' < test.txt # 或者用 cat test.txt | wc -l 也可 if [ -s test.txt ]; then echo $linecount number of line detected echo else echo No line detected. echo fi
解决方案
1. 修复变量赋值错误
原脚本给linecount赋值的语法完全错误,必须用命令替换语法($()或反引号)包裹统计行数的命令,否则变量无法正确获取结果。正确写法二选一:
# 推荐用$()(可读性更强) linecount=$(awk '{/^./ && c++} END{print c}' test.txt) # 或者用wc -l配合grep过滤空行(和原awk逻辑一致) linecount=$(grep -c '^.' test.txt)
2. 删除多余的换行输出
原脚本中echo内容后额外加了一个空echo,这会输出多余的空行,直接删掉即可。
3. 按目标格式输出
将输出内容用<strong>标签包裹,确保行数和文本在同一行。
修正后的完整脚本:
linecount=$(awk '{/^./ && c++} END{print c}' test.txt) if [ -s test.txt ]; then echo "<strong>$linecount number of line detected</strong>" else echo "<strong>No line detected.</strong>" fi
内容的提问来源于stack exchange,提问作者GND
相关产品推荐
相关产品推荐

