使用echo以垂直格式打印bash的输出



我定义了3个变量,并使用echo显示输出。但输出显示为单行,预期输出为单边输出。

a=$(ps -ef | grep java) 
b=$(ps -ef | grep http)  
c=$(ps -ef | grep php)
echo $a $b $c

输出:

java1 java2 java3 java4 http1 http2 http3 http4 php1 php2 php3 php4

预期输出

java1 http1 php1
java2 http2 php2 
java3 http3 php3  
java4 http4 php4

也用浆糊如下,但那个力也起作用。使用solaris OS

粘贴<(echo$a(<(echo$b(<(echo$c(

使用进程中的paste替换,您可以执行以下操作:

paste <(pgrep java) <(paste <(pgrep http) <(pgrep php))

大多数Unix风格的ps -ef提供多列输出,而不仅仅是单列输出。

使用ps -ef,您可以执行以下操作:

paste <(ps -ef | grep -o java) <(paste <(ps -ef | grep -o http) <(ps -ef | grep -o php))

这样的事情可能会帮助

#!/bin/bash
a='java1 java2 java3 java4'
b='http1 http2 http3 http4'
c='php1  php2  php3  php4'
a=($a)
b=($b)
c=($c)
for i in ${!a[@]}; {
echo ${a[$i]} ${b[$i]} ${c[$i]}
}

使用

$ ./test 
java1 http1 php1
java2 http2 php2
java3 http3 php3
java4 http4 php4

怎么样

for s in $a $b $c
do
echo $s
done

如果你以后不需要变量,我会简单地写

for w in java http php
do
ps -ef | grep -F -- "$w"
done

最新更新