電子書籍の厳選無料作品が豊富!

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

の続きですが質問の質が変わったので再質問です。

COMMAND1
COMMAND2

というスクリプトを連続で実行するスクリプトを作成しました。
最終的にCOMMAND1はdoneというメッセージを標準出力でターミナルに吐き、終了します。
フォアグラウンドプログラムならそのあとでCOMMAND2を実行するので良かったのですが、しかしCOMMAND1はバックグラウンドで実行するために、
このままでは終了を待たずにCOMMAND2が実行され、エラーをおこします。

COMMAND1、2とも別部署で製作され、共用をしているためにいじることはできませんのでいじるとしたら手元のスクリプトだけになります。

標準出力で「done」が出てくるのを待って次のコマンドにうつる~
なんてことができれば一番いいのですが、なんとかなりますか。

【やってみたこと】
fg COMMAND1
は失敗しました。

A 回答 (4件)

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



参考URL:http://www-6.ibm.com/jp/developerworks/linux/020 …
    • good
    • 0

No2です。


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

まとめての返答ですみません。
自分の質問自体がまとまってない・・・というか
COMMAND自体の細かい仕様がここで明らかにできないらしいので
(どうも社内独自で以前作ったものらしい)
質問にならないことが分かりました。

本当に知りたい事に限ってこういうのって質問しにくいものですね。
質問自体はいったん取り下げてexpectだけ試してみます。
すみませんでした。

お礼日時:2002/08/22 15:12

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が実行されてないように見える」ってのが、正解なのかも。
    • good
    • 0

「COMMAND1はバックグラウンドで実行するために、」


は間違いないですか?前の質問ページでは、
「単独で動いているのを見ていると実行終了までプロンプトが出てこないのでバックグラウンド動作はしていないと思うのです。」
と書かれてますが、また別のコマンドなんでしょうか?
単に、「 COMMAND1 ; echo OK 」と実行すると「OK」が先に出ますか?

ちなみに前の質問に書かれている「<<」の使い方は間違ってます。
command1 <<NANTOKA
$AAA
$BBB
NANTOKA
command2 <<KANTOKA
$AAA
$BBB
KANTOKA
command3 (以下略)
のように使います。
    • good
    • 0

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