SSH 내에서 조건이 실패하는 경우

SSH 내에서 조건이 실패하는 경우

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반면에 변수는 로컬로 정의되므로 이스케이프하고 싶지 않습니다.

관련 정보