sshやpsshでリモートでコマンドを実行する時の変数の書き方。
ssh hoge "for fname in /var/log/fuga/*; do echo $fname; done"
てやると、/var/log/fuga/内のファイルの数だけ空行が表示される。
何故かというと、$fname がsshコマンドに渡される前に評価されてしまい、
ssh hoge "for fname in /var/log/fuga/*; do echo ; done"
としているのと同じになってしまうから。
$fname をsshした後にhogeマシン側で評価して欲しい場合は \$ とエスケープする。
ssh hoge "for fname in /var/log/fuga/*; do echo \$fname; done"