whileループ中にsshを使うと1回目のループで終了する

Linux
この記事は約2分で読めます。

shellでwhileを使ってループ処理をするとき、ループ内でsshを使うとループ処理が1階で終了してしまいます。

そういう時はsshのオプション”n”を使うと想定通りに動きます。

 

                 

  1. ループするリストの準備

    1月から12月までを英語で表記したファイル /tmp/monthを用意しました。 January~Decemberまでの12個があります。


  2. whileループをさせてみる

    Ubuntuをインストールしたnp15からssh接続ができるRaspberry Piに対してwhileループ処理をさせてみます。
    1回目のループで終了してしまいました。


  3. forループさせてみる


    問題なく動作します。

どうすればよいか

sshのオプション”n”を使います。

想定通りの動きになりました。

原因ですが、通常はwhile read で1行ずつ読み込まれますが、sshを使用するとwhile readでリスト全体が読み込まれるため、1回目のループで正常終了するとのこと。

ときどきこの手のスクリプトを書くことがあるので注意していきたいです。

コメント

タイトルとURLをコピーしました