SSH 블록 내에서 로컬 변수에 액세스할 수 없습니다.

SSH 블록 내에서 로컬 변수에 액세스할 수 없습니다.
#!/bin/sh
flag="False"
ssh -n  $Domain_1@$IP "$( cat <<'EOT'
$flag="True"
cat << 'EOT'
)"

원격 위치에 연결하기 전에 플래그는 false입니다. 원격 위치에서 일부 작업을 수행한 후 ssh 블록 내부의 플래그 값을 변경하고 플래그 값을 로컬 변수 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에는 문자열이 할당되거나 true결과 false에 따라 할당 됩니다 some_condition.

원격 스크립트 내에서 값을 사용해야 하는 경우 $flag이 문서를 따옴표 없이 사용해야 합니다. 그런 다음 원격으로 발생하려는 셸 확장을 적절하게 이스케이프하도록 주의를 기울여야 합니다( $이를 로 이스케이프하여 \$).

관련 정보