큰 따옴표 안에있을 때는 Awk가 작동하지 않습니다


11

이 명령은 작동하지 않습니다 :

ssh $HOST "ls -l | awk '{print $1}'"`

위의 명령은 무시합니다 awk. 큰 따옴표 때문일 수 있다고 생각합니까?

또한 awk 안에 큰 따옴표를 어떻게 추가합니까?

즉 :

ssh $HOST "awk '{print $1 "*"}' /some_file"

나는 따옴표를 이스케이프하려고 시도했다.

ssh $HOST "awk '{print $1 "\""*"\""}' /some_file"

성공없이.

답변:


19

변수 보간 그래서 여기에 내가 일이 될 수있다 생각입니다, 따옴표 내에서 수행됩니다 : 당신이 입력 할 때 ssh $HOST "ls -l | awk '{print $1}'", (당신이 SSH 클라이언트를 실행하는 로컬 컴퓨터에 하나) 쉘은보고 $1와 따옴표 및 대체합니다 그것을 내 변수의 값으로, $1비어 있습니다. 가 $1큰 따옴표 안에 작은 따옴표 안에 중첩되어 있음을 감지 할 수 없습니다 . 그래서 원격 서버로 전송되는 것은

ls -l | awk '{print }'

이것은 기본적으로

ls -l | cat

즉, 그냥의 출력을 인쇄합니다 ls -l.

해결책 : $백 슬래시로

ssh $HOST "ls -l | awk '{print \$1}'"

하하, 너무 간단 했어요! 방금 똑바로 보았습니다! 이것은 내가 원하는 것을 정확하게했습니다. ssh $ HOST "ls -l | awk '{print \ $ 1 \"* \ "}'"감사합니다!
Nick
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.