dポイントプレゼントキャンペーン実施中!

bashを使っているのですが、

シェルの中で、

./実行ファイル hoge1 hoge2 > hoge.txt

という感じで二つの引数を使って動作する実行ファイルの標準出力を、リダイレクトしたいです。
ですが、テキストに出力をリダイレクトできません。
こんな感じの書き方でリダイレクトできないもんなんでしょうか?
教えて欲しいです。

よろしくお願いします。

A 回答 (5件)

リダイレクト、パイプは標準出力パスを使います。

標準出力パスを使わずに標準エラー出力パスを使っていませんか?

例:fprintf(stderr, "...", );
  write(2, buffer, SIZE);
   ↓↓↓ 正解 ↓↓↓
  fprintf(stdout, "...", ); または printf();
  write(1, buffer, SIZE);
    • good
    • 0

書式としては、


./実行ファイル hoge1 hoge2 > hoge.txt
で間違っていませんよ。

どこかに間違いがあるんでしょうけど、具体的な情報が皆無なので、なんとも言い難いです。
スクリプトの先頭で、set -x と書いて、実行前のコマンドラインの出力をさせてそれを見ると何か気づくことがあるかも。
    • good
    • 0

とりあえず指摘させてもらうけど, あなたが「シェル」といっているものは「スクリプト」と呼ぶべきものだと思います. なぜかこの 2つを混同する人がいるんだけど, それは「『ワープロで作った文書』を『ワープロ』と呼ぶ」くらいおかしなことです.


で, なんだけど, 検証が足りない気がする. まず, 「スクリプトを使わない」で bash から直接
./実行ファイル hoge1 hoge2 > hoge.txt
と実行するとどうなりますか?
あと,
「./実行ファイル hoge1 hoge2
として、シェルを使わずに実行させると普通に予定通り動きますし、
標準出力にも出力されています。」
の最後, 「標準出力にも出力されています」というのはどのように確かめたのでしょうか?
そして, この「シェルを使わずに実行させる」ときに「標準出力にも出力されてい」るものは, 「./実行ファイル $1 $2 > hoge.txt と書いた」ときにはどうなっていますか?
ついでだけど, これも差し支えなければそのスクリプトを全部見せてほしい.
    • good
    • 0

まさか、実行ファイルが何も出力していないなんてことは無いですよね?

この回答への補足

回答ありがとうございます。

実行ファイルだけ動かすと予定通りに動いています。
引数を二つとり、リダイレクトをするとテキストファイルに書かれていない
という状態なので、
./実行ファイル $1 $2 > hoge.txt
という書き方が間違ってるのか???と思ったのですが、
よくわからず質問いたしました。

どうぞよろしくお願いします。

補足日時:2010/01/08 06:12
    • good
    • 0

差し支えなければ「本当にどのように入力したのか」を書いていただけますか?


あと, 「リダイレクトできない」というだけではどのような状況かわからないので, より詳細に書いていただけるとありがたいです. 特に「リダイレクトできていないことをどのようにして確かめたのか」があるといいかな.
ディスクがいっぱいとか, ディレクトリに対して書き込みパーミッションがないとか, そういうオチではないですよね.

この回答への補足

回答ありがとうございます。

入力としては、
hoge.sh
の中で
./実行ファイル $1 $2 > hoge.txt
と書いているとして、
bash hoge.sh hoge1 hoge2
と実行している感じです。

確認としては、
./実行ファイル hoge1 hoge2
として、シェルを使わずに実行させると普通に予定通り動きますし、
標準出力にも出力されています。
./実行ファイル > hoge.txt
として、シェルから動かしても、予定通り動くのですが、
./実行ファイル $1 $2 > hoge.txt
と書くと、テキストファイルに何も書かれていないという状態です。

原因がよく分からず困っている状態です。
どうぞよろしくお願いします。

補足日時:2010/01/08 05:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!