使用ssh和shell脚本在远程计算机上使用变量执行命令


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

我想远程机器不知道这些变量。那么有没有办法它们导出到目标?


Answers:


7

我不知道将环境变量导出到目标的简便方法,但是如果替换为',脚本可能会起作用"。使用's字符串'cd ${LOCATION}; ./${EXEC}'逐字传递,但是使用

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

变量替换在本地完成。

请注意,值LOCATIONEXEC传递到远程shell,所以如果它们不包含任何shell特殊字符这仅适用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.