在 bash 脚本中回车符号被忽略

2016-01-12 18:34:38 +08:00
 ivito
在 bash 中直接执行 ps 获得以下结果:
PID TTY TIME CMD
8131 pts/19 00:00:00 bash
8159 pts/19 00:00:00 zsh
9907 pts/19 00:00:00 ps
18350 pts/19 00:00:00 php
18353 pts/19 00:00:00 php
18362 pts/19 00:00:00 php
而如果执行如下脚本
process=$(ps)
echo $process
获得的结果如下:
ID TTY TIME CMD 8131 pts/19 00:00:00 bash 8159 pts/19 00:00:00 zsh 9755 pts/19 00:00:00 sh 9756 pts/19 00:00:00 ps 18350 pts/19 00:00:00 php 18353 pts/19 00:00:00 php 18362 pts/19 00:00:00 php
回车不见了,这是为什么呢?
3386 次点击
所在节点    Linux
3 条回复
18000rpm
2016-01-12 18:54:43 +08:00
jsfaint
2016-01-12 20:14:33 +08:00
是 echo 后边的都被当做一行了……
实际上那个$process 是有换行的。
for line in $process
do
echo $line
done
就可以分别显示每行内容
ivito
2016-01-12 21:02:48 +08:00
@18000rpm 1 楼正解,不加引号的话 echo 把$process 分割成好多个参数了
@jsfaint 确实,用 for 循环的话可以换行,但是输出格式全乱了, for 会把空格什么的都当成分割符号

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/250220

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX