[英]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>&1
將at
的 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.