如何让Linux mpstat输出在日志文件中保持多行格式?
解决mpstat输出写入日志变成一行的问题
嘿,这个问题我之前也踩过坑!原因很简单:你用echo $CPU_USAGE输出变量的时候,Bash会自动把变量里的换行符当成空格处理,原本的多行输出就被合并成一行了。下面给你两种快速解决的办法:
方法一:直接重定向mpstat的输出(最推荐)
不用把输出存到变量里,直接让mpstat的结果追加到日志文件,这样能完美保留终端里的格式:
#!/bin/bash mpstat >> temp.log
方法二:用双引号包裹变量输出
如果一定要先把输出存到变量里,记得用双引号把变量包起来,这样Bash就不会拆分换行符了:
#!/bin/bash CPU_USAGE=$(mpstat) echo "$CPU_USAGE" >> temp.log
补充说明:为什么会这样?
当你不加双引号使用echo $CPU_USAGE时,Bash会执行单词拆分操作——它会把变量里所有的空白字符(包括换行、空格、制表符)都当成分隔符,把内容拆成多个“单词”,然后echo再用空格把这些单词拼接起来输出,自然就变成一行了。而加了双引号之后,单词拆分的步骤会被跳过,变量里的换行符会完整保留下来。
内容的提问来源于stack exchange,提问作者Monty Swanson
相关产品推荐
相关产品推荐

