$ /usr/bin/ssh user@server "sudo sysdumpdev -e |awk '{print \$7}' |awk '{size=\$1/1024/1024; printf("%d\n", size);}'"
Syntax Error The source line is 1.
The error context is
{size=$1/1024/1024; >>> printf(% <<< dn, size);}
awk: 0602-502 The statement cannot be correctly parsed. The source line is 1.
답변1
큰따옴표 안에 큰따옴표를 이스케이프 처리해야 합니다.
/usr/bin/ssh user@server "sudo sysdumpdev -e |awk '{print \$7}' |awk '{size=\$1/1024/1024; printf(\"%d\n\", size);}'"
이 두 awk
명령을 하나로 결합할 수 있습니다.
/usr/bin/ssh user@server "sudo sysdumpdev -e |awk '{printf(\"%d\n\", \$7/1024/1024);}'"
awk
또 다른 방법은 로컬 컴퓨터에서 명령을 실행하는 것입니다.
/usr/bin/ssh user@server sudo sysdumpdev -e |awk '{print $7}' |awk '{size=$1/1024/1024; printf("%d\n", size);}'
/usr/bin/ssh user@server sudo sysdumpdev -e |awk '{printf("%d\n", $7/1024/1024);}'
편집하다:인용하다데이브 톰슨_085의 코멘트
저는 로컬 형식을 선호하지만 원격 형식을 단순화하여 다음과 같이 할 수 있습니다.
ssh u@s "sudo sysdumpdev -e | awk '{print int($ 7/1024/1024)}' "
-- $ 7
로컬 쉘에서는 매개변수로 처리되지 않지만 (원격) awk에서는 필드로 처리됩니다.