リモートシステムの変数を使用してSSHとシェルスクリプトを介してコマンドを実行する

リモートシステムの変数を使用してSSHとシェルスクリプトを介してコマンドを実行する

ローカルコンピュータのスクリプトを使用して、リモートコンピュータ上のコマンドとスクリプトを実行したいと思います。私は を使ってそのようなコマンドを実行できることを知り、ssh次のようにしました。

#!/bin/bash
ssh username@target 'cd locationOf/theScript/; ./myScript.sh'

完璧に動作します。私はこのスクリプトがより一般的で変数を使用したいと思います。今です:

#!/bin/bash
LOCATION=locationOf/theScript/
EXEC=myScript.sh
ssh username@target 'cd ${LOCATION}; ./${EXEC}'

次のエラーが発生します。bash: ./: is a directory

リモートコンピュータがこれらの変数について知らないようです。それでは方法はありませんか出口彼らは目標を達成しましたか?

答え1

環境変数をターゲットにエクスポートする簡単な方法がわかりませんが。をsに置き換えると文字列はそのまま渡されますが、次のようにします'"''cd ${LOCATION}; ./${EXEC}'

ssh username@target "cd ${LOCATION}; ./${EXEC}"

変数の置換はローカルで行われます。

LOCATION値はEXECリモートシェルに渡されるため、シェル特殊文字が含まれていない場合にのみ有効です。

関連情報