왜 다른 변수 값을 얻나요?

왜 다른 변수 값을 얻나요?

원격 컴퓨터에서 sdb 크기의 크기를 얻으려는 경우 - 마스터

알겠어요:

#  ssh master "lsblk | grep \"^sdb\" | awk '{print \$4}' "
100G

하지만

변수에 크기 값을 설정하고 인쇄하려고 하면 다음과 같은 결과를 얻습니다.

# VAR=` ssh master "lsblk | grep \"^sdb\" | awk '{print \$4}' " `
# echo $VAR
sdb 8:16 0 100G 0 disk

왜 최종 테스트에서는 100G 크기만 제공되지 않습니까?

여기서 무슨 차이가 있어?

답변1

로컬에서 실행할 수 있는 작업을 원격으로 실행하지 마세요.

var=$( ssh master lsblk | awk '/^sdb/ { print $4 }' )

값이 sdb변수에 있는 경우(아래 설명 참조):

var=$( ssh master lsblk | awk -v disk="$variable" '$0 ~ disk { print $4 }' )

또는 줄 시작 부분에서 강제로 일치시키려면

var=$( ssh master lsblk | awk -v disk="$variable" '$0 ~ "^" disk { print $4 }' )

답변2

또 다른 백슬래시를 추가해야 합니다.

VAR=` ssh master "lsblk | grep \"^sdb\" | awk '{print \\$4}' " `
echo $VAR
100G

관련 정보