bashには参照するたびにランダムな数値を返す、RANDOMって変わった変数があります。
$ echo $RANDOM 32036 $ echo $RANDOM 9500 $ echo $((RANDOM % 6 + 1)) ##サイコロを振る 2
最近、似たような変数でSECONDSというのがあるのに気づきました。
このパラメータを参照すると、シェルが起動されてからの秒数が返されます。 SECONDSに値を代入した場合、それ以降の参照において返される値は、代入された値と代入以降の秒数を足した値になります。 SECONDSをunsetすると、この変数の特殊な性質は無くなります。後で再びsetしても元には戻りません。
今までは特定処理の処理時間を測定するのにこう書いてましたが
#!/bin/bash BEFORE=`date +%s` ### 時間測定したい処理 sleep 3 ### AFTER=`date +%s` TIME=$((AFTER - BEFORE)) echo $TIME
SECONDSを使うとこう書けます。
#!/bin/bash SECONDS=0 ### 時間測定したい処理 sleep 3 ### TIME=$SECONDS echo $TIME
$ sh seconds.sh 3
便利ですね!
他にもいろんな特殊変数あるので、bashのmanを読んでみましょう!