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

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

我想使用本地计算机上的脚本执行位于远程计算机上的命令和脚本。我知道可以使用 执行此类命令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将传递到远程 shell,因此仅当它们不包含任何 shell 特殊字符时才有效。

相关内容