首页 > 解决方案 > 将 bash 脚本中的变量传递给 sshpass

问题描述

我正在尝试将 bash 脚本中的变量传递给 sshpass。这是我的参考代码:

NAME="HARRY"
sshpass -p passwd ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q ipaddress 'bash -s' << 'EOF'
   echo $NAME
EOF

如何将 bash 脚本中的变量传递给 sshpass?谢谢!

标签: bashsshpass

解决方案


最简单的方法是在运行 bash 之前使用 env

NAME="HARRY"
sshpass -p passwd ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q ipaddress env NAME="$NAME" 'bash -s' << 'EOF'
   echo $NAME
EOF

您可以使用多个 env 语句传递多个变量,例如

export NAME="HARRY"
export SOMEVAR="hello"
sshpass -p passwd ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q ipaddress env NAME="$NAME" env SOMEVAR="$SOMEVAR" 'bash -s' << 'EOF'
   echo $NAME
EOF

请注意,您的变量在传递它们时可能会被解释。您可以通过更改env NAME="$NAME"为未解释的版本来避免这种情况env NAME="'$NAME'"


推荐阅读