mat*_*tbh 6 shell scripting time posix
我想知道是否有办法在任何符合POSIX标准的shell中获得自UNIX纪元以来的秒数,而无需使用perl之类的非POSIX语言,或使用非POSIX扩展(如GNU awk的strftime函数).
以下是我已经排除的一些解决方案......
date +%s//不适用于Solaris
我见过一些shell脚本 建议之前,其解析输出date,然后获得从格式化的公历日期秒,但他们似乎并没有采取像闰秒细节考虑在内.
GNU awk具有该strftime功能,但这在标准中不可用awk.
我可以编写一个调用该time函数的小型C程序,但该二进制文件将特定于特定的体系结构.
是否有使用POSIX兼容工具的跨平台方式?
我很想放弃并接受对perl的依赖,这至少是广泛部署的.
perl -e'print time'//作弊(非POSIX),但应该适用于大多数平台
jll*_*gre 11
这是一个便携/ POSIX解决方案:
PATH=`getconf PATH` awk 'BEGIN{srand();print srand()}'
Run Code Online (Sandbox Code Playgroud)
不同于C编译器或Perl,awk保证是存在于符合POSIX标准环境.
这个怎么运作:
PATH =`getconf PATH`确保调用它的POSIX版本,awk如果它不是第一个PATH.
根据POSIX标准:
srand([expr])
如果省略expr,则将rand的种子值设置为expr或使用时间.应返回先前的种子值.
第一个调用是省略参数,因此种子值设置为一天中的时间.第二个调用是返回那个时间,这是自纪元以来的秒数.
请注意,对于许多awk实现但不是GNU one(gawk),第一次调用不是必需的,因为函数已经首先返回了期望值.
| 归档时间: |
|
| 查看次数: |
3371 次 |
| 最近记录: |