在 bash 脚本中回车符号被忽略
- 0次
- 2021-07-05 01:46:14
- idczone
在 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
回车不见了,这是为什么呢?
用 echo "$process"
http://stackoverflow.com/questions/613572/capturing-multiple-line-output-to-a-bash-variable
是 echo 后边的都被当做一行了……
实际上那个$process 是有换行的。
for line in $process
do
echo $line
done
就可以分别显示每行内容
1 楼正解,不加引号的话 echo 把$process 分割成好多个参数了
确实,用 for 循环的话可以换行,但是输出格式全乱了, for 会把空格什么的都当成分割符号