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」オプションを指定することによって対処できます。