将局部变量传递给远程 shell bash 脚本



尝试使用 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"时,我得到的结果是"选择的环境是"。 shell 无法将变量传递给远程系统。

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 配置添加SendEnv envissh自动发送它。必须导出变量才能正常工作。

相关内容

  • 没有找到相关文章

最新更新