2回(24時間制)比較できますか?私にとって必要なのは、最初の時間が2番目の時間より早いことを確認することです。
例:
$ ./script.ksh 09:30:15 13:00:34
okay
$ ./script.ksh 05:25:00 02:30:50
invalid arguments
答え1
これら2つの値が次の変数にある場合:
a="09:30:15"
b="13:00:34"
その後、これを使用して次の値を比較(AND ksh93
)できます。
[ "${a//':'}" -lt "${b//':'}" ] && echo "okay" || echo "invalid arguments"
これはksh
パラメータ拡張を使用します${parameter//pattern/string}
。マンページから:
パラメータを展開し、最も長い一致パターンを指定された文字列に置き換えます。 [...]パターンの各一致は、指定された文字列に置き換えられます。
したがって、09:30:15
と展開します。これはユーティリティが比較できる整数です。マニュアルページから:093015
13:00:34
130434
test
INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2
編集する:ksh88
この機能を持たないwithを最初に削除してから、値を比較する必要があり${parameter//pattern/string}
ます。:
sed
a="$(printf '%s' "$a" | sed -e 's/://g')"
b="$(printf '%s' "$b" | sed -e 's/://g')"
[ "$a" -lt "$b" ] && echo "okay" || echo "invalid arguments"
答え2
ksh -c '
IFS=: x=2
set ${0+09:30:15} ${0+13:00:34}
for t do eval "
[ ${t#0} -lt \"\${$((x+=1))#0}\" ]" && break
done &&
echo "$1:$2:$3 is earlier than $4:$5:$6"
'
09:30:15 is earlier than 13:00:34