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

Bash脚本求助:如何保留换行符将top前5进程存入变量

解决Bash中top输出存入变量后换行丢失的问题

你的问题核心是变量引用时未添加双引号,Bash处理未加引号的变量时,会将换行符、连续空格等空白字符统一替换为单个空格,导致所有内容挤成一行输出。

修正后的代码

#!/bin/bash
getTopProcess(){
    top_output=$(top -n 1 -b -o %CPU | awk 'NR>=8 && NR <=12')
    echo "$top_output"  # 关键:给变量包裹双引号
}

getTopProcess

原理说明

  • 未加引号的$top_output会触发Bash的单词拆分机制:变量内的换行、空格、制表符都会被当作单词分隔符,最终所有内容被拼接成一行。
  • 加上双引号"$top_output"后,Bash会完整保留变量内的原始格式,包括换行符和连续空格,从而实现原样输出top的5行进程内容。

更简洁的写法

如果不需要将内容存入变量复用,也可以直接输出awk的结果,省去变量存储步骤:

#!/bin/bash
getTopProcess(){
    top -n 1 -b -o %CPU | awk 'NR>=8 && NR <=12'
}

getTopProcess

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:52:12