回答編集履歴
6
回答修正:コード修正 stderrを/dev/nullへ
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
test=/tmp/dir1/*.txt
|
14
14
|
|
15
|
-
filecnt=`ls -1 $test | wc -l`
|
15
|
+
filecnt=`ls -1 $test 2>/dev/null | wc -l`
|
16
16
|
|
17
17
|
if [ $filecnt -eq 0 ]; then
|
18
18
|
|
@@ -64,7 +64,7 @@
|
|
64
64
|
|
65
65
|
test=/tmp/dir1/data.txt
|
66
66
|
|
67
|
-
filelines=`cat $test | wc -l`
|
67
|
+
filelines=`cat $test 2>/dev/null | wc -l`
|
68
68
|
|
69
69
|
if [ $filelines -eq 0 ]; then
|
70
70
|
|
5
回答編集:追加したコードの変数名修正
test
CHANGED
@@ -64,13 +64,13 @@
|
|
64
64
|
|
65
65
|
test=/tmp/dir1/data.txt
|
66
66
|
|
67
|
-
file
|
67
|
+
filelines=`cat $test | wc -l`
|
68
68
|
|
69
|
-
if [ $file
|
69
|
+
if [ $filelines -eq 0 ]; then
|
70
70
|
|
71
71
|
echo "ファイルが存在しないかまたは内容はゼロ行です"
|
72
72
|
|
73
|
-
elif [ $file
|
73
|
+
elif [ $filelines -eq 1 ]; then
|
74
74
|
|
75
75
|
echo "ファイルの内容は一行です"
|
76
76
|
|
4
回答追加:ファイル数でなくファイル内の行数であった場合の回答を追加
test
CHANGED
@@ -3,10 +3,6 @@
|
|
3
3
|
|
4
4
|
|
5
5
|
これが「testで指定されたファイルPATHのファイル数」という解釈でいいのでしょうか?
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
こういうことですか?
|
10
6
|
|
11
7
|
|
12
8
|
|
@@ -54,6 +50,60 @@
|
|
54
50
|
|
55
51
|
|
56
52
|
|
53
|
+
----
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
もし、「testで指定されたファイルの行数」であれば
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
```
|
62
|
+
|
63
|
+
#!/bin/sh
|
64
|
+
|
65
|
+
test=/tmp/dir1/data.txt
|
66
|
+
|
67
|
+
filecnt=`cat $test | wc -l`
|
68
|
+
|
69
|
+
if [ $filecnt -eq 0 ]; then
|
70
|
+
|
71
|
+
echo "ファイルが存在しないかまたは内容はゼロ行です"
|
72
|
+
|
73
|
+
elif [ $filecnt -eq 1 ]; then
|
74
|
+
|
75
|
+
echo "ファイルの内容は一行です"
|
76
|
+
|
77
|
+
exit 9
|
78
|
+
|
79
|
+
else
|
80
|
+
|
81
|
+
echo "ファイルは二行以上です"
|
82
|
+
|
83
|
+
fi;
|
84
|
+
|
85
|
+
exit 0
|
86
|
+
|
87
|
+
```
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
実行結果
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
> $ cat /tmp/dir1/data.txt
|
96
|
+
|
97
|
+
> 1 line
|
98
|
+
|
99
|
+
> $ ./test.sh
|
100
|
+
|
101
|
+
> ファイルの内容は一行です
|
102
|
+
|
103
|
+
> $ echo $?
|
104
|
+
|
105
|
+
> 9
|
106
|
+
|
57
107
|
|
58
108
|
|
59
109
|
----
|
3
回答編集:コード編集 ls/wcコマンドの実行回数を減らした。
test
CHANGED
@@ -16,11 +16,13 @@
|
|
16
16
|
|
17
17
|
test=/tmp/dir1/*.txt
|
18
18
|
|
19
|
+
filecnt=`ls -1 $test | wc -l`
|
20
|
+
|
19
|
-
if [
|
21
|
+
if [ $filecnt -eq 0 ]; then
|
20
22
|
|
21
23
|
echo "ファイルはありません"
|
22
24
|
|
23
|
-
elif [
|
25
|
+
elif [ $filecnt -eq 1 ]; then
|
24
26
|
|
25
27
|
echo "ファイルは一件です"
|
26
28
|
|
2
回答編集:実行結果追加 etc
test
CHANGED
@@ -18,23 +18,39 @@
|
|
18
18
|
|
19
19
|
if [ `ls -1 $test | wc -l` -eq 0 ]; then
|
20
20
|
|
21
|
-
echo "
|
21
|
+
echo "ファイルはありません"
|
22
22
|
|
23
23
|
elif [ `ls -1 $test | wc -l` -eq 1 ]; then
|
24
24
|
|
25
|
-
echo "
|
25
|
+
echo "ファイルは一件です"
|
26
26
|
|
27
27
|
exit 9
|
28
28
|
|
29
29
|
else
|
30
30
|
|
31
|
-
echo "
|
31
|
+
echo "ファイルは2件以上です"
|
32
32
|
|
33
33
|
fi;
|
34
34
|
|
35
35
|
exit 0
|
36
36
|
|
37
37
|
```
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
実行結果
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
> $ ./test.sh
|
46
|
+
|
47
|
+
> ファイルは一件です
|
48
|
+
|
49
|
+
> $ echo $?
|
50
|
+
|
51
|
+
> 9
|
52
|
+
|
53
|
+
|
38
54
|
|
39
55
|
|
40
56
|
|
1
追記
test
CHANGED
@@ -24,10 +24,38 @@
|
|
24
24
|
|
25
25
|
echo "$test is 1 files"
|
26
26
|
|
27
|
+
exit 9
|
28
|
+
|
27
29
|
else
|
28
30
|
|
29
31
|
echo "$test is more file"
|
30
32
|
|
31
33
|
fi;
|
32
34
|
|
35
|
+
exit 0
|
36
|
+
|
33
37
|
```
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
----
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
> うまくいかない
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
エラーが表示される場合は質問にエラーメッセージを記入しましょう。
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
```
|
54
|
+
|
55
|
+
$ ./test2.sh
|
56
|
+
|
57
|
+
./test2.sh: line 6: 期待してない token `fi' のあたりにシンタックスエラー
|
58
|
+
|
59
|
+
./test2.sh: line 6: `fi'
|
60
|
+
|
61
|
+
```
|