- blogs:
- cles::blog
2015/02/06

SECONDS 変数を使った bash お手軽タイムアウト実装

先日、シェルスクリプトのタイムアウト実装をしたときに使った SECONDS についてのメモ。
タイムアウトの実装方法はいろいろあると思うのですが、今回使った SECONDS は bash に標準で用意されている変数*1で、起動時からの経過秒数が格納されています。これをスタート時点で別の変数に記録しておいて、ループ内で判定してやれば簡単にタイムアウトが実装できます。
SECONDS
このパラメータを参照すると、シェルが起動されてからの秒数が返されます。 SECONDS に値を代入した場合、それ以降の参照において返される値は、 代入された値と代入以降の秒数を足した値になります。 SECONDS を unset すると、この変数の特殊な性質はなくなります。後で再び set しても元には戻りません。
サンプルとしてはこんな感じになるでしょうか。
MAX_SLEEP_SECS=3
SLEEP_INTERVAL=1
TTL=$(( $SECONDS + $MAX_SLEEP_SECS ))
while true ; do
if [ -d ./test ] ; then
echo "./test found."
break;
fi
echo "sleep..."
sleep $SLEEP_INTERVAL
if [ "$TTL" -le "$SECONDS" ]; then
echo "Timed out"
break;
fi
done
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/7377
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(111532)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110194)
3 . 年次の人間ドックへ(109749)
4 . 2023 年分の確定申告完了!(1つめ)(109331)
5 . 三菱鉛筆がラミーを買収(109212)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110194)
3 . 年次の人間ドックへ(109749)
4 . 2023 年分の確定申告完了!(1つめ)(109331)
5 . 三菱鉛筆がラミーを買収(109212)
cles::blogについて
Referrers