我正在尝试 ssh 到远程主机,在.zshrc
主机上的文件中加载环境变量,然后使用该环境变量执行命令。
到目前为止,这是我的脚本,
#!/usr/bin/expect -f
spawn ssh hostname
send "echo $my_variable\n"
interact
我的远程主机上的文件.zshrc
包含以下内容,
export my_variable=banana_tree
运行上面的脚本时我得到这个输出,
spawn ssh hostname
can't read "my_variable": no such variable
while executing
"send "echo $my_variable\n""
(file "/Users/me/myscript.sh" line 6)
我知道错误消息说期望找不到变量,因为它没有在我执行脚本的环境中定义,一种解决方法是在我运行脚本的地方定义变量,但我更喜欢仅在可能的情况下保留在远程主机上定义的变量。
答案1
我必须在脚本中转义美元符号,所以它变成了,
#!/usr/bin/expect -f
spawn ssh hostname
send "echo \$my_variable\n"
interact
它看起来像是.zshrc
正在加载,但要在主机上加载环境变量,我必须转义美元符号,而如果我想在脚本中定义环境变量,我不会转义美元符号。