• ベストアンサー

シェルスクリプトでwhileを用いてrshを繰り返し使う場合

Bシェルスクリプトでリモートシェル(rsh)を使う場合の質問です。 現在、以下のような状態です。 有識者の方、アドバイスをお願いします。 ・Aでは、ループされずhostAの場合のみ処理がされます。 (while文が効いていない) ・Bでは、ループされて問題なくhostA,hostB,hostCが処理されます。 (while文が効いている) なぜなのでしょうか。。。(r系コマンドの特性?) ちなみり、リモート側のサーバには.rhostsが設定してあり 問題なくコマンドが通ることは確認済みです。 スクリプトA---------------------------------------------- #!/bin/sh while read line ; do rsh $line hostname done <<END hostA hostB hostC END スクリプトA---------------------------------------------- スクリプトB---------------------------------------------- #!/bin/sh while read line ; do echo " HOST=$line" done <<END hostA hostB hostC END スクリプトB----------------------------------------------

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

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

rsh -n $line hostname ――にしてみては。詳しくはman rshをどうぞ。

thanks0428
質問者

お礼

manに書いてありましたね。失礼しました。。。

その他の回答 (1)

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

rsh コマンドが標準入力を読むので、rshが初回の起動でhostB hostCまでデータを読んでしまいます。 #1の方のアドバイスのように -n をつけるか、 for line in hostA hostB hostC do rsh $line hostname done のようにするか。

thanks0428
質問者

お礼

ありがとうございました!お二人のアドバイスにより解決しました

関連するQ&A