尝试使用bash脚本将局部变量传递给远程shell。这是我正在尝试的。这是test.sh
#!/bin/bash
envi=$1
function samplefunction {
echo "Environment selected is $envi"
}
if [ "$envi" = "test" ]; then
ssh user@remotehost <<EOF
$(typeset -f samplefunction)
samplefunction
EOF
else
echo "Please pass correct parameter which is - test"
fi
当我尝试执行“./test.sh test”时,我得到的结果是“Environment selected is”。 shell无法将变量传递给远程系统。
答案 0 :(得分:0)
ssh
不会(并且不能)在远程端提供此类变量。
您可以像嵌入函数一样嵌入定义:
ssh user@remotehost <<EOF
$(declare -p envi)
$(typeset -f samplefunction)
samplefunction
EOF
您还可以复制所有已知变量。在这种情况下,它有助于压缩有关设置只读值的错误:
ssh user@remotehost <<EOF
{
$(declare -p)
} 2> /dev/null
$(typeset -f samplefunction)
samplefunction
EOF
如果您有经常要复制的特定变量,可以选择让ssh
通过向您的ssh配置添加SendEnv envi
来自动发送该变量。必须导出变量才能使其生效。