gpt4 book ai didi

linux - 在 bash 脚本中分配 "at"命令的输出

转载 作者:太空狗 更新时间:2023-10-29 12:16:32 27 4
gpt4 key购买 nike

我试图在 Bash 脚本中捕获“at”命令的结果。各种捕获命令输出的方式好像都不行,但我不确定是命令中的管道还是别的什么。

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

但是所有这些都让脚本挂起,看起来像是在等待一些输入。

执行此操作以得到如下变量的正确方法是什么:

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 获取的第一行打印执行时间。

关于linux - 在 bash 脚本中分配 "at"命令的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22824805/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com