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"