首页 > 解决方案 > 通过 ssh 传递变量

问题描述

我正在尝试通过 ssh 传递变量,并编写了两个简短的测试脚本(bash)

这个是在另一边执行脚本(它至少部分有效)

我开始执行:'mms test alpha one'

#!/bin/bash
    sshpass -p (password) ssh hellfire@192.168.0.11 'bash /scripts/mms2 "$@"'

执行的第二个脚本是:

#!/bin/bash
echo "$@" >/scripts/test1.txt

此脚本仅用于测试是否传递参数。

到目前为止,它创建了文本文件,但它是空的,所以我不知道这两个或只有一个脚本是否有问题。

基本上我想将一组变量传递给服务器上的脚本,这些变量可以包含空格。

有人有任何提示吗?

标签: bashvariablessshwhitespace

解决方案


我通过@Gordon Davidsson的评论发现$(printf "%q " "$@")可以将其作为字符串发送,因此远程服务器不会将变量解释为不同的命令。

我的新工作脚本是:

#!/bin/bash
sshpass -p (password) ssh hellfire@192.168.0.11 "bash /scripts/mms2 $(printf "%q " "$@")"

推荐阅读