#!/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
이 문서를 따옴표 없이 사용해야 합니다. 그런 다음 원격으로 발생하려는 셸 확장을 적절하게 이스케이프하도록 주의를 기울여야 합니다( $
이를 로 이스케이프하여 \$
).