OSX bash 命令行倒计时器

Tim*_*Tim 2 linux bash command-line macos

我在超级用户这里找到了以下不错的倒计时脚本,我可以将其包含在我的 .bash_profile 中:

function countdown(){  
   date1=$((`date +%s` + $1));   
   while [ "$date1" -ne `date +%s` ]; do   
     echo -ne "$(date -u --date @$(($date1 - `date +%s`)) +%H:%M:%S)\r";  
     sleep 0.1  
  done  
}
Run Code Online (Sandbox Code Playgroud)

据我所知,由于命令的差异,它在 OSX 上不起作用date。另一位用户这样评论,但该问题仍然没有解决。

同样的问题(我认为)也在这里讨论和解决,但我无法弄清楚如何修改倒计时脚本以利用此解决方案。

gle*_*man 5

就我个人而言,我会对其进行一些重构以提高可读性(仍然依赖于 GNU 日期)

function countdown(){  
    local now=$(date +%s)
    local end=$((now + $1))
    while (( now < end )); do   
        printf "%s\r" "$(date -u -d @$((end - now)) +%T)"  
        sleep 0.25  
        now=$(date +%s)
    done  
    echo
}
Run Code Online (Sandbox Code Playgroud)

将日期调用映射到 OSX 的 BSD 日期(此处为手册页

它看起来像 GNU 日期调用

date -u -d @$((end - now)) +%T
Run Code Online (Sandbox Code Playgroud)

转换为此 BSD 日期调用

date -u -j -f %s $((end - now)) +%T
Run Code Online (Sandbox Code Playgroud)

但这是未经测试的。


归档时间:

查看次数:

5594 次

最近记录:

3 年,9 月 前