在 Zsh 中有一个wait
(对于一个进程或作业)命令,一个while
(Seconds == Delay)命令,和一个sched
(如果 shell 仍在运行则稍后执行)命令,但没有“延迟”命令。如果有的话,我担心这将仅限于整秒延迟。我需要一个“延迟”语句,它基本上可以导致过程/任务在固定点数指定的时间内或直到某个时钟时间几乎不做任何事情。
大多数脚本会使用“sleep”,但我希望在不打开 IO 的情况下运行延迟计时器;我正在寻求几乎任何事情都可以在 Zsh 中完成的理想。
有谁知道如何让一个函数(或者内置函数/模块)以秒为单位执行浮点空闲延迟?
最佳答案
我会争辩说你做出了错误的假设。 zsh
是一个 shell,因此它的目的是成为一个 shell。作为 shell 的一个重要点是成为 POSIX 兼容的 shell。此外,由于 zsh
完全向后兼容 bash
,而后者又完全向后兼容应该是 POISX shell 的 bourne shell。
这意味着自 sleep
is required for a POSIX shell 以来 zsh
必须有权访问 sleep
.
这就是我们对 POSIX 兼容性争论的看法。现在进行实际使用论证。大多数系统将使用 GNU coreutils sleep
实现允许浮点参数的sleep
。因此以下是 POSIX 可移植的:
if ! sleep 0.03; then
sleep 1
fi
并且在大多数情况下应该作为细粒度延迟工作,同时在操作系统不使用 GNU coreutils 的极少数情况下仍然不会中断。据我所知,这些罕见的情况只是 AIX 和 HP-UX 系统。
关于linux - 我如何在 Zsh 中使用 float "delay"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39457087/