我如何可以设置SSH的局部变量?(How can i set a local variable in

2019-10-18 04:58发布

我想设置一个局部变量是只有在这种环境中使用的ssh命令链:

#!/bin/sh
my_var='/tmp/wrong_file'
ssh user@server "my_var='/tmp/a_file'; cat $my_var;my_var=123;echo $my_var"
echo $my_var

本例中,“外” $my_var使用。 如何解决这一问题,并使用“在”当前ssh连接变量作为本地定义? 有没有需要改变或访问外部价值'/tmp/wrong_file'$my_var ,如询问指定目录列表变量bash脚本通过ssh 。

Answer 1:

您使用了错误的报价。 参数扩展单引号双引号内进行,但不是。

#!/bin/sh
my_var=/tmp/wrong_file
ssh user@server 'my_var=/tmp/a_file; cat $my_var;my_var=123;echo $my_var'


Answer 2:

首先:在SSH外壳和当地壳是完全不同的,不交换任何环境变量。 这是一件好事 - 使用不同的OS架构的机器之间的SSH时需要考虑的环境变量,如LD_LIBRARY_PATH。

恕我直言,你的问题的最佳解决方案是封装你的命令到遥控器上侧的shell脚本,那么也许有参数启动它。 例如:

远程:

myscript.sh包含:

#!/bin/sh
MY_FILE="$1";
echo "Contents of §MY_FILE:"
cat $MY_FILE

本地:

运行类似

export REMOTE_FILE='/path/to/it'
ssh user@server "/path/to/myscript.sh '$REMOTE_FILE'"


文章来源: How can i set a local variable in ssh?
标签: ssh