我值$dates
數組,我轉變:UNIX地圖功能
for i in $dates
do
date -d "1970-01-01 $i sec UTC" '+%a_%D'
done
有沒有辦法救這個操作的結果,所以我可以管到別的東西,沒有它寫入文件在磁盤上?
我值$dates
數組,我轉變:UNIX地圖功能
for i in $dates
do
date -d "1970-01-01 $i sec UTC" '+%a_%D'
done
有沒有辦法救這個操作的結果,所以我可以管到別的東西,沒有它寫入文件在磁盤上?
創建一個函數:
foo() {
for i in [email protected]
do
date -d "1970-01-01 $i sec UTC" '+%a_%D'
done
}
然後你可以如輸出發送到標準錯誤:
echo `foo $dates` >&2
您可以將它寫入FIFO - 一個看起來像文件的「命名管道」。
維基百科有其使用的一個體面的例子:http://en.wikipedia.org/wiki/Named_pipe
命名管道非常有趣,謝謝!不過,我一直在陷入僵局。需要了解更多關於它們的信息。 – pokerface 2011-01-25 03:27:10
你的問題是有點模糊,但下面的工作:
for ...
do
...
done | ...
編輯,沒有看到整個文件的事情:
for i in $dates ; do
date -d "1970-01-01 $i sec UTC" '+%a_%D'
done |foo
op特別提到不想將數據寫入文件。 – 2011-01-25 03:25:32
如果使用bash,你可以使用數組:
q=0
for i in $dates
do
DATEARRAY[q]="$(date -d "1970-01-01 $i sec UTC" '+%a_%D')"
let "q += 1"
done
然後,您可以回顯/管理該數組到另一個程序。請注意,數組是特定於bash的,這意味着這不是一個可移植的(好吧,超出系統的bash)解決方案。
既然你說「轉化」我假設你的意思是你想捕捉的環路的輸出變量。你甚至可以替換你的$dates
變量的內容。
dates=$(for i in $dates; do date -d "@$i" '+%a_%D'; done)
你是否被限制爲bash?如果沒有,我建議在Perl中做這個... map是包的一部分。 – DVK 2011-01-25 03:16:21
你的陣列有多大? 10s,100s,1000s,更大?爲什麼它不能寫入磁盤?你能否將結果保存在另一個陣列中?爲什麼不? – 2011-01-25 03:40:08
你的`date`版本是否支持`date -d「@ $ i」'+%a_%D'`? – 2011-01-25 06:24:52