在bash脚本中分配“at”命令的输出

我试图捕获Bash脚本中的“at”命令的结果。 捕获命令输出的各种方法似乎不起作用,但我不确定它是命令中的pipe道还是别的东西。

echo $cmd | at $deployat 

产生输出

 job 42 at 2014-04-03 12:00 

而且我正在努力争取时间。

不过,我期望的是类似的东西

 v=$($cmd | at $deployat) echo $v 

会工作,或

 v=$(echo $cmd | at $deployat) echo $v 

要么

 v=`$cmd | at $deployat` echo $v 

但是,所有这些都将剧本挂起,看起来像是在等待一些input。

什么是正确的方法来做到这一点,最终像一个variables:

 2014-04-03 12:00 

============================

编辑:

一个可能的并发症是$ cmd带有标志:

 ls -l 

例如。

扩展的命令可能是这样的:

 echo ls -l | at noon tomorrow 

解:

 v=$(echo $cmd | at $deployat 2>&1) echo $v 

at打印输出到stderr不是标准输出。 使用2>&1at的stderr输入到stdout。 例:

 ~$ out=$(echo cat Hello | at -v 2014-04-03 2>&1 | head -n 1) ~$ echo $out Thu Apr 3 01:21:00 2014 

-v打印执行时间在head -n 1的第一行。