局部变量在 ssh 块内不可访问

局部变量在 ssh 块内不可访问
#!/bin/sh
flag="False"
ssh -n  $Domain_1@$IP "$( cat <<'EOT'
$flag="True"
cat << 'EOT'
)"

在连接到远程位置之前,flag 等于 false。我只想在远程位置执行一些操作后更改 ssh 块内的 flag 值,并将 flag 值返回到本地变量 flag。 –

答案1

我假设你想做一些类似的事情

#!/bin/sh

flag=$(
    ssh -T "$user@$host" <<'END_SCRIPT'
        # some operations on
        # the remote host goes here

        # later...

        if some_condition; then
            echo true
        else
            echo false
        fi
END_SCRIPT
)

这将在远程主机上执行作为引用的此处文档给出的脚本,并将其输出分配给本地变量flag。按照我在这里写的方式,我假设该位some operations确实不是产生任何输出,而远程脚本产生的唯一输出来自两个条件echo命令之一。

您的flag变量将被分配字符串truefalse取决于 的结果some_condition

如果您需要使用远程脚本内的值$flag,则必须使用不带引号的此处文档。然后必须注意正确转义您希望远程发生的任何 shell 扩展(通过将$这些转义为\$)。

相关内容