bash - 将 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?谢谢!
解决方案
最简单的方法是在运行 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'"
推荐阅读
- python - AutoEncoder 巨大的损失没有收敛
- java - 抛出 WebServerException:无法使用 Powermock 和 Springboot 启动嵌入式 Tomcat
- mysql - nodejs中的多个依赖mysql查询......承诺不是答案吗?
- python - 如何处理在 Pandas 中返回类似字典的对象列表的 JSON?
- javascript - 错误:必须在 mapbox-gl-js 中定义类型属性
- javascript - NODE_MODULES 4096 value not working for javascript heap out of memory 错误
- aframe - 无法使用 aframe 显示 AR 内容/对象
- python - Pandas Dataframe 迭代循环无限期加载
- variables - laravel中两个变量的foreach循环
- dataframe - pyspark 加入 2 个查找表