#!/bin/sh
flag="False"
ssh -n $Domain_1@$IP "$( cat <<'EOT'
$flag="True"
cat << 'EOT'
)"
원격 위치에 연결하기 전에 플래그는 false와 같습니다. 원격 위치에서 일부 작업을 수행한 후 ssh 블록 내부의 플래그 값을 변경하고 플래그 값을 내 로컬 변수 플래그로 반환하고 싶습니다. –
답변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
)
이는 원격 호스트에서 인용된 here-document로 제공된 스크립트를 실행하고 해당 출력은 로컬 변수에 할당됩니다 flag
. 내가 여기에 쓴 방식은 비트가 some operations
그렇다고 가정하고 있습니다.~ 아니다모든 출력을 생성하고 대신 원격 스크립트에 의해 생성된 유일한 출력은 두 조건부 echo
명령 중 하나에서 나옵니다.
변수 에는 문자열 또는 의 결과에 따라 flag
할당됩니다 .true
false
some_condition
원격 스크립트 내에서 값을 사용해야 하는 경우 $flag
인용되지 않은 here-document를 사용해야 합니다. 그런 다음 원격으로 발생하려는 셸 확장을 적절하게 이스케이프하도록 주의를 기울여야 합니다(이를 $
로 이스케이프하여 \$
).