为了账号安全,请及时绑定邮箱和手机立即绑定

与硬编码字符串相比,在打印命令输出时,bash的行为不同

与硬编码字符串相比,在打印命令输出时,bash的行为不同

慕娘9325324 2021-04-12 16:13:23
我正在尝试使用tmux和简单的bash脚本在终端中获取非常基本的状态栏-因此窗口很小(高度为1或2行,宽度可能少于10个字符)。导致异常行为的命令是:echo "$(top -bn 1 | awk '/^%Cpu/{print $2}')%"基本上应该只是打印出类似的东西1.8%。在普通大小的终端(带或不带tmux)中,它可以正常工作,但是当我缩小终端时,有时它会切断数字并仅显示%。这似乎不太奇怪,但是当我在此命令周围放一些文字时,例如echo "ab$(top -bn 1 | awk '/^%Cpu/{print $2}'cd"abcd缩小终端时得到输出。因此,这仅影响$(...)被切除的零件的枯萎。另外,当我打印两行时:echo "$(top -bn 1 | awk '/^%Cpu/{print $2}'%"echo "20.5%"它可以20.5%很好地打印,甚至可以分成几行,例如20.5%而不是只打印其中的一部分。但是,第一行仅显示%没有任何数字。知道是什么原因造成的,以及如何显示数字?
查看完整描述

1 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

默认情况下,top即使在批处理模式下使用并且输出通过管道传输而不是转到终端时,也要检查终端大小并根据其调整输出。您可以使用该-w选项来覆盖它。

echo "$(top -w 50 -bn 1 | awk '/^%Cpu/{print $2}')%"


查看完整回答
反对 回复 2021-04-16
  • 1 回答
  • 0 关注
  • 238 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信