質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

2回答

1174閲覧

行数のカウントがうまくできない

退会済みユーザー

退会済みユーザー

総合スコア0

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

0グッド

0クリップ

投稿2017/02/18 11:31

行数のカウントがうまくできません。
今、

if ls -t $test_file=0;then echo"ファイルなし" exit 1 fi

と書いたのですが、うまくできません。
このファイルと同じディレクトリ内にある
test_fileの中身の行数が0(すなわちtest_fileが中身を何も持たないとき)このメソッドが実行されるようにしたいです。

どこを直せば良いのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

sh

1if [ ! -e $test_file ]; then 2 echo"ファイルなし" 3 exit 1 4fi

質問者さんはlsの結果がゼロ行であることをもって
ファイルが無い条件と考えていらっしゃるようで。
-e でファイルの有無が判断できます。
たぶんこれがいいんじゃないかな?
-s はファイルサイズがゼロかどうかを判断します。

投稿2017/02/18 12:48

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

中身がゼロ、つまり空ファイルの判断なら

if [ ! -s $test_file ]; then echo"ファイルなし" exit 1 fi

で良いのでは?

投稿2017/02/18 11:45

編集2017/02/18 11:54
kanbeworks

総合スコア829

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/02/18 11:57

ありがとうございます!中身がない、というより行数が0かを判断したかったのですが... ! それでもその書き方ですかね?
kanbeworks

2017/02/18 12:11 編集

「中身がある」けど「行数は0」というケースはどのような場合でしょう? ひょっとして「空行だけ」の場合ですか? 空行でも末尾には改行文字があるので「行数は0」ではありませんが。
退会済みユーザー

退会済みユーザー

2017/02/19 01:00

中身がない=行数が0ではありませんか? つまり、何も書いていないファイルを行数が0であることにより判断したいということです。
kanbeworks

2017/02/19 04:07

まず、「結果」が大切なのか「手法」が大切なのか。 「結果」を重視するのであれば、「行数が0であること」にこだわるのではなく、より適切と思われる手法を考えたほうが良いでしょう。 「行数が0であること」という「手法」にこだわるのなら、その旨を質問に追記してください。 また、「ファイルの中身が空」なのか「ファイルの数が0」なのか、判断したい結果がどちらであるのか明確にしてください。 前者であれば私の、後者であればtakasima20さんの回答になるかと思います。 ※私の回答が最適解とは限りません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問