#!/bin/bash
echo "Enter process name"
read process
if pgrep "$process" > /dev/null
then
echo 0 $(awk '/Rss/ {print "+", $2}' /proc/`pidof $process`/smaps) | bc;
echo "Kb"
else
echo "Process $process not running"
fi
上面代码的输出是
41250
Kb
我需要" Kb"输出与这个数字相同的行
41250 Kb
答案 0 :(得分:2)
您可以使用echo -n
输出没有尾随换行符的数据,但对于这种特殊情况,awk
完全能够自行进行算术和格式化,而不涉及bc
或不必要的子流程:
awk '/Rss/ {sum += $2} END {print sum" Kb"}' /proc/`pidof $process`/smaps
您可以在以下记录中看到,这两个Rss
数字75
与11
相加,以获得86
:
pax> printf Rss 75\nCss 22\nRss 11\n' | awk '/Rss/ {sum += $2} END {print sum" Kb"}'
86 Kb
答案 1 :(得分:1)
使用-n
标志。
示例:
echo -n 'I do not want a new line,'
echo ' because there is something else here.'
使用$ man echo
获取更多信息。
答案 2 :(得分:0)
41250
之后的换行实际上来自bc
,而不是回声。
在变量中捕获bc
的输出会删除尾随换行符(ref)。
#!/bin/bash
kbCount=$( echo "1+2" | bc)
echo $kbCount "Kb"
现在你应该可以解决它了:)