我值$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