从两个嵌套程序中设置bash变量

时间:2015-11-03 00:26:30

标签: linux bash shell command-line

我需要多次运行一个应用程序并使用一些命令获取一些statistcs。 我正在做的事情的一个简单例子是:

/usr/bin/time --format="%U" date

此行将打印:

Seg Nov  2 22:15:28 BRST 2015
0.00

我需要格式化这个输出,我想用bash这样做:

echo "$usertime & $date"

其中$usertime是来自/usr/bin/time --format="%U"$date date的结果

的结果

我知道以下内容有效,但我不知道如何将值分成两个变量:

OUTPUT=`/usr/bin/time --format="%U" date`
echo "$OUTPUT"

上面的输出是:

0.00
Seg Nov  2 22:23:50 BRST 2015

(按相反顺序)

2 个答案:

答案 0 :(得分:1)

使用awk

这里,awk用于反转行顺序并格式化输出:

$ /usr/bin/time --format="%U" date 2>&1 | awk 'NR==1{d=$0;next} {print $0 " & " d}'
0.00 & Mon Nov  2 16:58:40 PST 2015

使用sed

$ /usr/bin/time --format="%U" date 2>&1 | sed -E 'N; s/([^\n]*)\n(.*)/\2 \& \1/'
0.00 & Mon Nov  2 17:01:15 PST 2015

使用shell

$ /usr/bin/time --format="%U" date 2>&1 | ( read d; read t; echo "$t & $d" )
0.00 & Mon Nov  2 17:04:40 PST 2015

答案 1 :(得分:0)

/ usr / bin / time正在将时间写入标准错误,而date的输出将转到标准输出。如果您希望它们位于单独的变量中,您可以将时间输出写入带有$.when标志的文件,然后将其读回另一个变量:

-o