簡體   English   中英

在 bash 腳本中分配“at”命令的輸出

[英]Assigning the output of the "at" command in a bash script

我試圖在 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而不是 stdout。 使用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所采用的第一行打印執行時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM