gpt4 book ai didi

linux - 在循环中运行命令而不每次都生成新的子 shell

转载 作者:行者123 更新时间:2023-12-05 02:35:24 25 4
gpt4 key购买 nike

我有一个 bash 脚本,它以纪元时间读取大量日期,并确定它们发生的一天中的(本地)小时。相关片段:

while read ts
do
hour="$(date -d@$((${ts} / 1000)) +%H)"
((hourly_counts["${hour}"]+=1))
done < "${jqfile}"

它相当慢,因为它为每次调用 date 生成一个新的子 shell。有没有明智的方法来解决这个问题?看起来 date 不支持多个查询。

我所能想到的就是生成一个新的 shell,并将 date 命令传递给它并返回结果,以便它们都在同一个 shell 中执行。但我不清楚如何做到这一点,而且它似乎有点过度设计。

最佳答案

使用printf:

printf -v hour '%(%H)T' "$(( ts / 1000 ))"

键入 help printf 以了解有关该命令的更多信息。

同时检查 strftime(3)。行为可能取决于 TZLC_TIME 的值。

关于linux - 在循环中运行命令而不每次都生成新的子 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70577702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com