次は私のために動作しません:sshリモート変数の割り当て?
ssh [email protected] "k=5; echo $k;"
それだけで空行を返します。
リモートセッション(ssh)で変数を割り当てるにはどうしたらいいですか?
注:私の質問は私のSSHセッションにローカル変数を渡す方法についてではなく、どのようにリモート変数を作成して割り当てることができます。 (かなりまっすぐ進むタスクでなければなりません?)
編集:
は、より詳細には、私はこれを行うにしようとしています:
bkp=/some/path/to/backups
ssh [email protected] "bkps=($(find $bkp/* -type d | sort));
echo 'number of backups: '${#bkps[@]};
while [ ${#bkps[@]} -gt 5 ]; do
echo ${bkps[${#bkps[@]}-1]};
#rm -rf $bkps[${#bkps[@]}-1];
unset bkps[${#bkps[@]}-1];
done;"
findコマンドが正常に動作しますが、用何らかの理由で$bkps
が入力されません。 だから私の推測では、私は他のすべてをチェックしていると思うので、それは、変数の代入の問題だろうと...
ヒントコマンドをローカルで試してみるか、sshサーバーにログインして試してみてください。 Bashでは、exportコマンドを使用して環境変数を設定する必要があります。 ssh [email protected] "export k = 5; echo $ k;" – Codeguy007
@ Codeguy007:私は自分の問題の詳細をさらに広げました。実際に環境変数を設定しようとはしていません。単純化された問題は実際に出力をリダイレクトすることと関係があると仮定します。 – Pitt
'ssh [email protected]" k = 5; echo \ $ k; "'を試してください。 '$'の前のバックスラッシュに注意して、シェルが早期に展開しないようにしてください。二重引用符の代わりに一重引用符を使用すると、同じことが達成されます。 – twalberg