回答編集履歴

2

コード変更

2020/02/24 06:26

投稿

abratani
abratani

スコア23

test CHANGED
@@ -1,8 +1,12 @@
1
- cshはあんまり触ったことないですが日時の判定できるかと
1
+ ゴリ押しですが下記で日時の判定+日時に文字が入ってないとを確認するスクリプト
2
2
 
3
3
 
4
4
 
5
- 例外文字が入っていた場合対応grepで数値以外を引てもし値ば判定をしないとかでできるかなと思いま自分はcsh詳しくでわったら編集したいと思います
5
+ endif2個入っていのはelseに入た場合抜る時にendif not found出力さです(自分だけなのかは不明)
6
+
7
+
8
+
9
+ 下記はCentOS7,cshで確認しています
6
10
 
7
11
 
8
12
 
@@ -10,7 +14,11 @@
10
14
 
11
15
  #!/bin/csh
12
16
 
17
+ set line = `echo $1 | egrep -o '[0-9]+' | wc -l`
13
18
 
19
+ set text = `echo $1 | egrep -o '[0-9]' | tr -d '\n'`
20
+
21
+ set len = `expr length $text`
14
22
 
15
23
  set yyyy = `echo $1 | head -c 4`
16
24
 
@@ -26,6 +34,16 @@
26
34
 
27
35
 
28
36
 
29
- if ( $yyyy >= 1900 && $yyyy <= 9999 && $MM >= 1 && $MM <= 12 && $DD >= 1 && $DD <= 31 && $hh >= 0 && $hh <= 23 && $mm >= 0 && $mm <= 59 && $ss >= 0 && $ss <= 59 ) echo "OK"
37
+ if ( $line == 1 && $len == 14 && $yyyy >= 1900 && $yyyy <= 9999 && $MM >= 1 && $MM <= 12 && $DD >= 1 && $DD <= 31 && $hh >= 0 && $hh <= 23 && $mm >= 0 && $mm <= 59 && $ss >= 0 && $ss <= 59 ) then
38
+
39
+ echo "OK"
40
+
41
+ else
42
+
43
+ echo "NG"
44
+
45
+ endif
46
+
47
+ endif
30
48
 
31
49
  ```

1

修正

2020/02/24 06:26

投稿

abratani
abratani

スコア23

test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  set mm = `echo $1 | head -c 12 | tail -c 2`
24
24
 
25
- set ss = `echo $1 | tail -c 2`
25
+ set ss = `echo $1 | head -c 14 | tail -c 2`
26
26
 
27
27
 
28
28