OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

RedHatでのシェルスクリプトについて

  • すぐに回答を!
  • 質問No.115065
  • 閲覧数747
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 94% (50/53)

こんにちは。また質問させて下さい。
redhat7.0のシェルスクリプトで、
サンプルコード片手に以下のコードを記述しました。

やりたい事は、もしaaa.txtというファイルが存在したら
その内容を表示させ、存在しなければその旨のメッセージを
表示させる、という単純なものです。

この時、ファイルが存在しない時に
./test.sh: /tmp/aaa.txt: No such file or directry
というエラーになってしまいます。
エラーを抜けてメッセージを表示させるには
どうしたらいいでしょうか。
アドバイスよろしくお願いいたします。

*********記述したコードです。*************
#!/bin/bash

fileName=/tmp/aaa.txt

read varStr1 varStr2 <fileName

if [ -a fileName ]; then
echo {$varStr1}
else
echo{$fileName}{$varStr2}
fi
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル14

ベストアンサー率 50% (1122/2211)

一番の勘違いは、No.1 の方も書いているとおりそのエラーが存在チェックより
前の read でおきていることを見落としていること。

また test ( [ ) のオプションについて、今回は、/tmp/aaa.txt から何かしらの
値を読み込むので -f よりは -s の方がむいています( -a は AND の演算なので
間違い)。

というわけで、

#!/bin/bash

fileName=/tmp/aaa.txt

if [ -s $fileName ]
then
 read varStr1 varStr2 < $fileName
 echo {$varStr1} {$varStr2}
else
 echo $fileName is not found.
fi

という感じ。

多分転記ミスだとは思いますが、if や read の fileName の $ が抜けて
いることと、varStr2 も /tmp/aaa.txt が存在しないと設定されていない
変数なのに、ファイルが存在しない方に入っていることを指摘しておきます。
お礼コメント
bunnyLove

お礼率 94% (50/53)

a-kumaさん、前回に引き続き、回答ありがとうございます。
とてもわかりやすいです。
いっぱい間違っていましたね・・・。
ちゃんと考えればわかる事でした。ご指摘ありがとうございます。
サンプルコードはネットで探しているのですが、
今回のは[-a fileが存在すればtrue][-s fileが存在し、そのサイズが0より大きかったらtrue]と書いてありました。
よくわからないので-aの方を使っていました。
値を読み込むのだから-sが良い、と解りました。
ありがとうございます。
また何かありましたらよろしくお願いいたします。本当に、助かりました!
投稿日時 - 2001-08-07 16:21:52
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル13

ベストアンサー率 37% (419/1115)

私はbashではなくshで記述するので該当するかどうか判りませんが、if文に-fを用いてみては如何でしょう。 bashだとこうなるのでしょうか。 if [ -f /tmp/aaa.txt ]   fileName=/tmp/aaa.txt else   ファイルが存在しない場合の処理 fi -fを用いるとそのファイルが存在するかどうか確認できますので、確認できたらfileNameに設 ...続きを読む
私はbashではなくshで記述するので該当するかどうか判りませんが、if文に-fを用いてみては如何でしょう。
bashだとこうなるのでしょうか。

if [ -f /tmp/aaa.txt ]
  fileName=/tmp/aaa.txt
else
  ファイルが存在しない場合の処理
fi

-fを用いるとそのファイルが存在するかどうか確認できますので、確認できたらfileNameに設定すれば良いと思います。
そうしないとread時にfileNameで指定されたファイルが存在しないのでエラーになってしまうのでしょう。
お礼コメント
bunnyLove

お礼率 94% (50/53)

naturalさん、回答ありがとうございます。
なるほど、確かにご指摘のとおり、ファイルが無いのに
readしてますよね。とほほ。
-fっていうのも使えるみたいですね!
どうもありがとうございました。
また何かありましたら教えてください。
助かりました!
投稿日時 - 2001-08-07 16:25:03
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ