• ベストアンサー

Cshell 標準出力を見張る方法はありますか。

http://oshiete1.goo.ne.jp/kotaeru.php3?q=338698 の続きですが質問の質が変わったので再質問です。 COMMAND1 COMMAND2 というスクリプトを連続で実行するスクリプトを作成しました。 最終的にCOMMAND1はdoneというメッセージを標準出力でターミナルに吐き、終了します。 フォアグラウンドプログラムならそのあとでCOMMAND2を実行するので良かったのですが、しかしCOMMAND1はバックグラウンドで実行するために、 このままでは終了を待たずにCOMMAND2が実行され、エラーをおこします。 COMMAND1、2とも別部署で製作され、共用をしているためにいじることはできませんのでいじるとしたら手元のスクリプトだけになります。 標準出力で「done」が出てくるのを待って次のコマンドにうつる~ なんてことができれば一番いいのですが、なんとかなりますか。 【やってみたこと】 fg COMMAND1 は失敗しました。

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

コマンドexpectが使えませんか?

参考URL:
http://www-6.ibm.com/jp/developerworks/linux/020614/j_l-sc1.html

その他の回答 (3)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

No2です。 No3さんは<<の後にシングルクォートを2つ書かれてますが、前質問はダブルクォート1つという違いがあります。 cshでダブルクォート1つだと文法エラー(Unmatched ")になるはずなんですが。 前の質問のことばかり書いて申し訳ないですが、 どうやら前の質問がちゃんと解決されていない上に、 今回の質問と前の質問の関係(同じプログラムの話なのかどうか)がはっきりしないので、 そこがクリアにならないと先へ進まないと思います。 前の質問は関係なくて、今回の質問に間違った記述が全く無いのなら、No1さんの書かれたようにexpectを試してみるべきでしょう。

elthy
質問者

お礼

まとめての返答ですみません。 自分の質問自体がまとまってない・・・というか COMMAND自体の細かい仕様がここで明らかにできないらしいので (どうも社内独自で以前作ったものらしい) 質問にならないことが分かりました。 本当に知りたい事に限ってこういうのって質問しにくいものですね。 質問自体はいったん取り下げてexpectだけ試してみます。 すみませんでした。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.3

No.2の > ちなみに前の質問に書かれている「<<」の使い方は間違ってます。 > command1 <<NANTOKA ですが、 | COMMAND1 <<'' と、なってたから動くんじゃあ、と思って実験。 % cat a.csh cat <<'' test desu echo fin. % csh a.csh test desu echo fin. % あれ、echo が出てる。 % sh a.csh test desu fin. % shだと上手く行きますね(プラットフォームの関係で、cshはtcsh、shはzshですが)。 と、いう事は、「here documentの終端が見つからないので、以降のスクリプトが全部COMMAND1に食べられていて、COMMAND2が実行されてないように見える」ってのが、正解なのかも。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

「COMMAND1はバックグラウンドで実行するために、」 は間違いないですか?前の質問ページでは、 「単独で動いているのを見ていると実行終了までプロンプトが出てこないのでバックグラウンド動作はしていないと思うのです。」 と書かれてますが、また別のコマンドなんでしょうか? 単に、「 COMMAND1 ; echo OK 」と実行すると「OK」が先に出ますか? ちなみに前の質問に書かれている「<<」の使い方は間違ってます。 command1 <<NANTOKA $AAA $BBB NANTOKA command2 <<KANTOKA $AAA $BBB KANTOKA command3 (以下略) のように使います。

関連するQ&A