我正在尝试自己创建top命令。我坚持阅读正在运行的进程列表
IFS=$'\n'
p=$(ps -A -o %cpu -o vsz -o time -o %c --sort -%cpu | head -3 )
for i in $p
do
echo $i
done;
但是当我出于某种原因尝试回声线时,所有" n"被" \ n"
取代%CPU VSZ TIME COMMAND
16.3 9761940 04:06:02 firefox
9.2 3255916 02:19:27 Web Co
te
t
^C
我将不胜感激任何帮助
谢谢
答案 0 :(得分:1)
您没有使用bash
运行脚本,因此您的IFS
被设置为三个单独的字符,而不是一个换行符。其中一个字符是n
,因此p
的不加引号扩展将字母n
视为字段分隔符。
以下是dash
中的一个简单示例:
$ IFS=$'\n'
$ printf '%s' "$IFS" | hexdump -C
00000000 24 5c 6e |$\n|
00000003
bash
中的相同示例:
$ IFS=$'\n'
$ printf '%s' "$IFS" | hexdump -C
00000000 0a |.|
00000001