我想使用本地计算机上的脚本执行位于远程计算机上的命令和脚本。我知道可以使用 执行此类命令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 特殊字符时才有效。