기계 목록에 ssh로 스크립트를 작성하고 변수를 다른 값과 비교합니다. 문제가 발생했습니다 (몇 가지 해결 방법이 있지만이 시점에서 왜이 방법이 효과가 없는지 궁금해하는 것).지저분한 bash 변수
VAR=`ssh $i "awk -F: '/^bar/ {print \$2}' /local/foo.txt"`
는 ($ 내가 호스트 이름을하여야 할 호스트, 암호 프롬프트가 주어지지 신뢰할 수 있습니다.)에 foo.txt의
예 :
foo:123456:abcdef
bar:789012:ghijkl
baz:345678:mnopqr
내가 있으리라 믿고있어 그것이 문제입니다 따옴표 또는 \ 어딘가에 필요합니다. 여러 가지 방법을 시도해 봤지만 (``, ''대신 $()를 사용하는 따옴표가 있지만) 제대로 된 것처럼 보이지 않습니다. 내 스크립트는 다음을 사용하여 올바르게 작동합니다.
VAR=`ssh $i "grep bar /local/foo.txt" | awk -F: '{print \$2}'`
내가 말했듯이, 단지 호기심, 모든 응답은 높이 평가됩니다.
내 출력이 무엇인지 게시하는 것을 잊어 버렸습니다. awk는 두 번째 섹션이 아닌 일치하는 전체 라인을 뱉어냅니다. 따옴표로 연주하고 \ "나는 거기에 새로운 줄이있는 것처럼"{print "명령을 찾지 못하는 등의 오류가 발생했습니다.
당신이 내 질문에 관련에 Serverfault에 대한 응답을 얻을 수 있습니다 tions/99886/ssh-not-redirecting-stdout-to-local-terminal –
첫 번째 예제에서 캐럿을 제거하면 어떻게됩니까? 어쩌면 선의 시작 부분에 보이지 않는 문자가있을 수 있습니다. – danben
@ Lance Roberts -이 질문은 ssh가 아니라 awk에 관한 것이므로 스택 오버 플로우에 적절합니다. – danben