リモートシェルで変数を保持する方法

リモートシェルで変数を保持する方法

私はコンピュータでSSHを実行し、いくつかのコマンドを実行しています。

私の最後のコマンドは、ローカルスクリプトに必要な変数を提供しました。しかし、コンピュータからログアウトした後、この変数にどのようにアクセスしますか?

編集:私がすでにコンピュータにログインしているとしましょう。

答え1

リモートで実行されたコマンドの出力をクライアントコンピュータのローカル変数にキャプチャできます。

myvar="foo" 
echo "$myvar"
myvar=$(ssh user@hostname 'myvar="bar"; echo $myvar')
echo "$myvar"

リモートコマンドの周りに一重引用符があることに注意してください'myvar="bar"; echo $myvar'。これにより、$myvar評価のためにリモートホストにコマンドを送信する前にシェルがローカルに拡張されるのを防ぎます。

答え2

希望の方法によって異なります。対話型セッションで単一のコマンドの出力を自動的に取得することは容易ではありません。もちろん、端末から出力をコピーして貼り付けることもできます。ただし、出力をリモートファイルに保存してから、次の操作を実行したり、次の最終var=$(ssh remote "cat file.with.var")出力を生成するコマンドを実行したりすることもできますvar=$(ssh remote "somecommand")

または、対話型セッションで直接これを実行するには、Expectスクリプトをインストールするだけです。

関連情報