久々にbashスクリプトを書いていたところ、意図しない動作にはまったので備忘。
以下のようなコードを書いていたのですが、ループが1回しか読み込まれない。
sshなしで変数lineを出力してみたら、ちゃんと動く。
shのwhileループでファイルを読み、中でsshを実行すると1回しかループしない
どうやらsshに標準入力がとられてしまうようで、sshに-nオプションを付ければよいとのこと。
しょうもないことですが、忘れてまた同じことをしそう。
以下のようなコードを書いていたのですが、ループが1回しか読み込まれない。
sshなしで変数lineを出力してみたら、ちゃんと動く。
while read line do dirname=`dirname "$line"` ssh "$REPOS_USER@$REPOS_SERVER" "mkdir -p ~/$REPOS_DIR/$HOSTNAME$dirname" done < "$TMP_DIR/$HOSTNAME"みんなはまってそうなので、調べたらすぐにでてきました。
shのwhileループでファイルを読み、中でsshを実行すると1回しかループしない
どうやらsshに標準入力がとられてしまうようで、sshに-nオプションを付ければよいとのこと。
しょうもないことですが、忘れてまた同じことをしそう。