使用 echo 以垂直格式打印 bash 的输出
Print output in vertical format for bash with echo
我定义了 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
paste <(echo $a) <(echo $b) <(echo $c)
这样的事情可能会有所帮助
#!/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
在进程替换中使用 paste
你可以这样做:
paste <(pgrep java) <(paste <(pgrep http) <(pgrep php))
ps -ef
在大多数 Unix 版本上提供多列输出,而不仅仅是单列输出。
使用 ps -ef
你可以这样做:
paste <(ps -ef | grep -o java) <(paste <(ps -ef | grep -o http) <(ps -ef | grep -o php))
怎么样
for s in $a $b $c
do
echo $s
done
如果你以后不需要变量,我会简单地写
for w in java http php
do
ps -ef | grep -F -- "$w"
done
我定义了 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
paste <(echo $a) <(echo $b) <(echo $c)
这样的事情可能会有所帮助
#!/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
在进程替换中使用 paste
你可以这样做:
paste <(pgrep java) <(paste <(pgrep http) <(pgrep php))
ps -ef
在大多数 Unix 版本上提供多列输出,而不仅仅是单列输出。
使用 ps -ef
你可以这样做:
paste <(ps -ef | grep -o java) <(paste <(ps -ef | grep -o http) <(ps -ef | grep -o php))
怎么样
for s in $a $b $c
do
echo $s
done
如果你以后不需要变量,我会简单地写
for w in java http php
do
ps -ef | grep -F -- "$w"
done