2015年1月アーカイブ

while中のsshにはまる。

久々にbashスクリプトを書いていたところ、意図しない動作にはまったので備忘。

以下のようなコードを書いていたのですが、ループが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オプションを付ければよいとのこと。
しょうもないことですが、忘れてまた同じことをしそう。