run 函数非常强大,它往往专门依靠解析输出来获取有关系统的信息-但是这显然存在缺陷,因为它让脚本解析用户可读的输出,输出在将来可能会发生更改,也可能不会。要更稳妥地收集有关系统的信息,请使用内置的 "get" 函数。对于 boot_time 属性,此函数返回的内容不是字符串,而是 ECMAScript Date 对象,以允许通过编程方式处理属性值。
script run('configuration version'); now = new Date(); uptime = (now.valueOf() - get('boot_time').valueOf()) / 1000; printf('up %d day%s, %d hour%s, %d minute%s, %d second%s\n', d = uptime / 86400, d < 1 || d >= 2 ? 's' : '', h = (uptime / 3600) % 24, h < 1 || h >= 2 ? 's': '', m = (uptime / 60) % 60, m < 1 || m >= 2 ? 's': '', s = uptime % 60, s < 1 || s >= 2 ? 's': '');
% ssh root@dory < uptime.aksh Pseudo-terminal will not be allocated because stdin is not a terminal. Password: up 2 days, 10 hours, 47 minutes, 48 seconds
由于是 ssh 客户机,因此会出现有关伪终端分配的消息;该消息所指的问题可以通过为 ssh 指定 "-T" 选项进行处理。