SSH를 통해 원격 컴퓨터(우분투)에 연결하고 그 안에서 작은 스크립트를 실행하려고 합니다. 스크립트는 다음과 같습니다.
myfunction()
{
input=$1
count=$2
ssh ubuntu@ip <<EOF
if [ $input = "comment" ];then
TotalCount=$count
echo "TotalCount is $TotalCount"
else
echo "do something"
fi
EOF
}
myfunction comment 2
SSH를 통해 서버에 연결하지만 공백으로 인쇄됩니다.
출력: TotalCount는 다음과 같습니다.
원격 호스트에서 실행 중이므로 (TotalCount=\$count) 변수를 이스케이프하려고 합니다. 하지만 성공은 없어
답변1
해결책
이 시도:
myfunction()
{
input=$1
count=$2
ssh user@host <<EOF
if [ $input = "comment" ];then
TotalCount=$count
echo "TotalCount is \$TotalCount"
else
echo "do something"
fi
EOF
}
myfunction comment 2
로컬로 확장되는 것을 방지하기 위해 백슬래시를 추가했습니다 \$TotalCount
.
설명하다
TotalCount
원격으로 정의된 변수를 이스케이프하려고 합니다 . 로컬로 평가 하면 $TotalCount
아마도 빈 문자열로 평가될 것이므로 출력이 표시되지 않는 이유를 설명합니다. count
반면에 변수는 로컬로 정의되므로 이스케이프하고 싶지 않습니다.