いくつかのデータが時間間隔にわたって分散されており、時間間隔内でいくつかのデータを取得したいと思います。たとえば、1..9、11..19などの範囲にあるデータがありますが、1-2、11-12などの範囲にあるデータをインポートしたいと思います。
これは、この条件とデータをキャプチャできるタイミングを分離するループをbash
含めるより複雑なスクリプトの一部になります。if
私は次のことを考えています:
if (( $t_initial & $t_final )) in (begin1, fin1) or in (begin2, fin2) ...
t_initial
ここで、合計はt_final
スクリプト自体によって別々に計算されます。
この条件を構文で作成することはできませんbash
。他の解決策を見つけましたが、長すぎて不快に見えたので、ここでより簡単で読みやすい解決策を求めます。
コードが浮動小数点数で正しく機能することは非常に重要です。 OPソリューションを修正しようとしていますが、まだ方法が見つかりません。
ベストアンサー1
この解決策が気に入るかもしれません。これには2つの特性があります。
- 外部プログラムは不要
- 関数を使用するので、少なくとも比較の複雑さを隠します。
これです:
#!/bin/bash
# The comparing function
function compareInterval {
t1=$1
t2=$2
shift 2
while (( "$2" )); do
if (( $t1 >= $1 && $t2 <= $2 )); then
# got match
return 0
fi
shift 2
done
return 1
}
# sample values
t_initial=2
t_final=4
# Invocation. Compares against 1-3, 3-5, 2-5
if compareInterval $t_initial $t_final 1 3 3 5 2 5; then
echo Got match
fi