リモートマシンで変数を使用してsshおよびシェルスクリプトでコマンドを実行する


8

リモートマシンにあるコマンドとスクリプトをローカルマシンのスクリプトで実行したいのですが。私はでこれらの種類のコマンドを実行することが可能であることを知っている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

リモートマシンはこれらの変数を認識していないと思います。それらをターゲットにエクスポートする方法はありますか?


回答:


7

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

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

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

値ことを注意LOCATIONしてはEXEC、彼らは任意のシェルの特殊文字が含まれていない場合にのみ動作しますので、リモートシェルに渡されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.