局部變數在 ssh 區塊內不可存取

局部變數在 ssh 區塊內不可存取
#!/bin/sh
flag="False"
ssh -n  $Domain_1@$IP "$( cat <<'EOT'
$flag="True"
cat << 'EOT'
)"

在連接到遠端位置之前,flag 等於 false。 –

答案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 擴展(透過將$這些轉義為\$)。

相關內容