Shell-Script
以 HH:MM:SS 格式比較兩次 - ksh
是否可以比較兩個時間(24 小時制)?我需要的是檢查第一次是否早於第二次。
例子:
$ ./script.ksh 09:30:15 13:00:34 okay $ ./script.ksh 05:25:00 02:30:50 invalid arguments
當這兩個值在這樣的變數中時:
a="09:30:15" b="13:00:34"
然後您可以使用它來比較這些值(使用
ksh93
):[ "${a//':'}" -lt "${b//':'}" ] && echo "okay" || echo "invalid arguments"
這使用
ksh
s 參數擴展${parameter//pattern/string}
。從手冊頁:擴展參數並用給定的字元串替換模式的最長匹配。
$$ … $$ 模式的每個匹配都被給定的字元串替換。
所以
09:30:15
擴展到093015
和。這些是實用程序可以比較的整數。從手冊頁:13:00:34``130434``test
INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2
編輯: with
ksh88
which 沒有該功能${parameter//pattern/string}
,您必須先刪除:
withsed
然後比較值:a="$(printf '%s' "$a" | sed -e 's/://g')" b="$(printf '%s' "$b" | sed -e 's/://g')" [ "$a" -lt "$b" ] && echo "okay" || echo "invalid arguments"