unix 地图函数

发布于 2024-10-14 13:03:02 字数 191 浏览 8 评论 0原文

我有一个正在转换的值 $dates 数组:

for i in $dates
do
  date -d "1970-01-01 $i sec UTC" '+%a_%D' 
done

有没有办法保存此操作的结果,以便我可以将其通过管道传输到其他内容,而无需将其写入磁盘上的文件?

I have an array of values $dates that I'm transforming:

for i in $dates
do
  date -d "1970-01-01 $i sec UTC" '+%a_%D' 
done

Is there a way to save the result of this operation so I can pipe it to something else without writing it to a file on disk?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

寒冷纷飞旳雪 2024-10-21 13:03:02

既然你说“转换”,我假设你的意思是你想在变量中捕获循环的输出。您甚至可以替换 $dates 变量的内容。

dates=$(for i in "$dates"; do date -d "@$i" '+%a_%D'; done)

Since you say "transforming" I'm assuming you mean that you want to capture the output of the loop in a variable. You can even replace the contents of your $dates variable.

dates=$(for i in "$dates"; do date -d "@$i" '+%a_%D'; done)
客…行舟 2024-10-21 13:03:02

创建一个函数:

foo () {
        for i in $@
        do
                date -d "1970-01-01 $i sec UTC" '+%a_%D'
        done
}

然后您可以将输出发送到标准错误:

echo `foo $dates` >&2

Create a function:

foo () {
        for i in $@
        do
                date -d "1970-01-01 $i sec UTC" '+%a_%D'
        done
}

Then you can e.g. send the output to standard error:

echo `foo $dates` >&2
白色秋天 2024-10-21 13:03:02

你的问题有点模糊,但以下可能有效:

for ...
do
 ...
done | ...

Your question is a bit vague, but the following may work:

for ...
do
 ...
done | ...
ㄖ落Θ余辉 2024-10-21 13:03:02

如果使用 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 的系统)解决方案。

If using bash, you could use an array:

q=0
for i in $dates
do
  DATEARRAY[q]="$(date -d "1970-01-01 $i sec UTC" '+%a_%D')"
  let "q += 1"
done

You can then echo / pipe that array to another program. Note that arrays are bash specific, which means this isn't a portable (well, beyond systems that have bash) solution.

坏尐絯℡ 2024-10-21 13:03:02

您可以将其写入 FIFO——一个看起来像文件的“命名管道”。

维基百科有一个很好的使用示例:http://en.wikipedia.org/wiki/Named_pipe

You could write it to a FIFO -- a "named pipe" that looks like a file.

Wikipedia has a decent example of its use: http://en.wikipedia.org/wiki/Named_pipe

痞味浪人 2024-10-21 13:03:02

编辑,没有看到整个文件的内容:

for i in $dates ; do
    date -d "1970-01-01 $i sec UTC" '+%a_%D'
done |foo

Edit, didn't see the whole file thing:

for i in $dates ; do
    date -d "1970-01-01 $i sec UTC" '+%a_%D'
done |foo
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文