2016-07-13 9 views
0

私はログファイルに2回の間にデータを取得するコードを書いています。私の入力は私の入力が./filename Jul 11 16 11:07:30 Apr 10 16 02:07:20であれば、それはのStartTimeをすることはできませんというエラーが表示される必要があり、次のように私は$EndTime変数に"Apr 10 16 02:07:20"$StartTimeにおける変数と"Jul 11 16 11:07:30"を格納していますUNIXで正しい月の順番を確認するにはどうすればいいですか?

./filename Apr 10 16 02:07:20 Jul 11 16 11:07:30 

StartTime="$1 $2 $3 $4" 
EndTime="$5 $6 $7 $8" 

になりますEndTimeより大きい

if [[ "$StartTime" > "$EndTime" ]] 
then 
{ 
echo "Error: StartTime cannot be greater than EndTime" 
exit 
} 
fi 

私は次のロジックを使用しています

、しかし、それはアルファベット順に数ヶ月かかっている、4月、8月、12月...と考えると8月は月よりも大きくなります。数字で月を並べ替えるにはどうすればいいですか?

+0

以来シェルスクリプト。シェルは、テキストの操作ではなく、ツールへの呼び出しを順序付けするためのものです。これはawkの仕事です。 [なぜシェルを使ってループを処理するかをテキストで判断する](http://unix.stackexchange.com/questions/169716/whyis-using-a-shell)を参照してください。 -loop-to-process-text-consider-bad-practice)を使用します。簡潔でテスト可能なサンプル入力と期待される出力で新しい質問を投稿すれば、誰かがあなたが正しい方法で何をしているかを手助けすることができます。 –

+1

ガイドラインをありがとう – Vishwaroopa

答えて

1

方法についてdate

$ StartTime=$(date --date="$1 $2 $4 $3" +%s) 
$ echo $StartTime 
1460243240 
$ EndTime=$(date --date="$5 $6 $8 $7" +%s) 
$ echo $EndTime 
1468224450 
$ your_script_above.sh 
$ echo $? 
0 

マン日付: - - %sの秒あなたは、このためのawkを使用していないする必要があります1970-01-01 00:00:00

+0

ありがとうございます。 – Vishwaroopa

関連する問題