Linux RHEL3 コンソール上での質問です。

ある標準出力を吐き出すプログラムを、日付区切りのファイル2ヶ所にログ書出ししたく、下記のようなシェルスクリプトを作ったのですが、3行目で標準入力を受け取ってくれません。

#!/bin/sh
LOGDATE=`date +%Y%m%d`
tee -a /usr/test/log1.$LOGDATE >> /usr/test/log2.$LOGDATE

シェルがどのように標準入力の受けとるのか全く分からず作っていますのでどんちんかんな質問かもしれませんが、よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:KuroNeko666 No.1

回答回数144ベストアンサー獲得回数2

ポイント65pt

http://homepage2.nifty.com/cs/linux_command/command/tee.html

$BF|7P(JLinux [Linux$B%3%^%s%I=8(J] tee : $BI8=`F~NO$rI8=`=PNO$H%U%!%$%k$K=PNO$9$k(J

tee の使い方が疑問です。


tee は、標準入力を指定されたファイルと標準出力に出力します。

なので、以下のようにします。


#!/bin/sh

LOGDATE=”`date +’%Y%m%d’`”

echo ”hogehoge” | tee -a /usr/test/log1.$LOGDATE >> /usr/test/log2.$LOGDATE


最初に標準出力があることがポイントです。

標準出力からパイプで標準入力として tee に繋ぎます。

引数をログに出したいときは…


echo ”$*” | tee -a /usr/test/log1.$LOGDATE >> /usr/test/log2.$LOGDATE


となります。


ちなみに、シングル/ダブルクォーテーションとかは、僕の癖なので気にしないでください(^^ゞ

http://www.ybi.co.jp/koike/src/BSH.htm

Bシェルスクリプトのすすめ

id:kamiochiai

記入が不足してました。

ある標準出力を吐き出すプログラムがあり、それの受け口として使うシェルスクリプトです。

aruscript | konoscript.sh

といった形で受け渡しされており、ここに手を加えることが出来ないため質問の形になりました。

【追記】2006/2/15 23:30

なお、下記は正しく標準入力が tee にわたるので問題ありませんでした

#!/bin/sh

tee -a /usr/test/log1 >> /usr/test/log2

質問の内容は

http://oshiete1.goo.ne.jp/kotaeru.php3?q=1508581

とほぼ同じなのですが、書いてある内容をもっと詳しく知りたいです

2006/02/16 12:53:26
id:tezcello No.2

回答回数460ベストアンサー獲得回数69

ポイント65pt

> 3行目で標準入力を受け取ってくれません

これは、エラーで止まってしまうという事でしょか、

それとも、エラーは出ないが、予定通りのファイルが作成されない、

あるいは作成されるが、内容が無い...

こういった所に、問題解決のヒントが隠れていませんか?

出来るだけ多くの情報を開示すると、より的確な回答を早く得る事に繋がります。


自前のサーバ(Vine Linux 3.2)で問題のスクリプトをテストしてみたら、アッサリと動いてしまいました。


$ cat test.sh

#!/bin/sh

LOGDATE=`date +%Y%m%d`

tee -a log1.$LOGDATE >> log2.$LOGDATE


$ date +%Y%m%d

20060217

$ echo first > log2.20060217

$ ls

log2.20060217 test.sh

$ echo second | ./test.sh

$ ls

log1.20060217 log2.20060217 test.sh

$ cat log1.20060217

second

$ cat log2.20060217

first

second


シェル変数 LOGDATE を使わない時は上手くいっているようですから、

チャンと変数に予定通りの値がセットされているかを確認されては?

id:kamiochiai

確認してみます。

ありがとうございます。

2006/02/17 15:15:35

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません