while : do date ls -l # 0.5 秒 sleep する perl -e 'select(undef, undef, undef, 0.5);' done
参考
追記(2011/06/29):
use Time::HiRes; auryo
はてなブックマーク - 1秒未満のスリープ - ablog
と shang さんにブクマでコメントいただきました。
Time::HiRes は標準モジュールじゃないと思っていたのですが、標準添付されているんですね。知りませんでした。
以下はいくつかの環境で Time::HiRes のバージョンを調べてみた結果です。
bash-3.2$ uname -a CYGWIN_NT-5.1 ********* 1.7.7(0.230/5/3) 2010-08-31 09:58 i686 Cygwin bash-3.2$ perl -MTime::HiRes -le 'print $Time::HiRes::VERSION' 1.9719
-bash-3.00$ uname -a SunOS ********* 5.10 Generic_142909-17 sun4u sparc SUNW,Sun-Blade-1000 -bash-3.00$ perl -MTime::HiRes -le 'print $Time::HiRes::VERSION' 1.59
$ uname -a Linux ***** 2.6.18-164.el5 #1 SMP Thu Sep 3 02:16:47 EDT 2009 i686 i686 i386 GNU/Linux $ perl -MTime::HiRes -le 'print $Time::HiRes::VERSION' 1.9717
Time::HiRes を使うと
while : do date ls -l # 0.5 秒 sleep する perl -MTime::HiRes -e 'Time::HiRes::sleep(0.5)' done
こんな風に書けますね。
shang さんありがとうございました。
追記(2011/06/29):
perl -MTime::HiRes=sleep -e 'sleep(0.5)' で7文字短縮可能。でも普通にシェルスクリプトでsleep 0.5 が可能な気も。
はてなブックマーク - 1秒未満のスリープ - ablog
と id:tzccinct さんにコメントいただきました。
use Time::HiRes 'sleep'
ってワンライナーでどう書くんだろうと思っていたのですが、
-MTime::HiRes=sleep
と書けばよいんですね。
というか、
bash-3.2$ while : do date ls -l sleep 0.5 done
って書けるんですね。
勉強になりました。ありがとうございます!