2013-07-29 2 views
0

공백이있는 태그를 호출하는 bash에 테스트 SVN 스크립트가 있습니다. 이것은 변수에 저장됩니다.공백이있는 bash 변수를 호출하십시오.

#!/bin/bash 


grepper="trunk-index FOR in footer" 

a=`svn ls -v file:///var/tags/folderrepo | grep $\"grepper\" | awk '{print $1}'` 
echo $a 
echo $grepper 

에코 $ a는에 대한에 대한 그러한이나 디렉토리를 제공하지 않습니다 및 바닥 글 에코 $의 grepper는 명령 행에서 변수 grepper

의 내용을 제공, 아래를 참조, 나는 따옴표를 사용하여 태그를 호출 할 수 있습니다 ,

[[email protected] scripts]# svn ls -v file:///var/tags/folderrepo | grep "trunk-index FOR in footer" 
131 ?     Jul 29 16:21 trunk-index FOR in footer/ 

그러나 스크립트에 따옴표를 넣었을 때도 호출 할 수 없습니다. bash 스크립트에서 공백이있는 태그를 호출 할 수 있도록 grep에 넣어야 할 사항.

감사합니다.

+3

하나는 변수를 "호출"하지 않습니다. 함수 만 호출됩니다. –

답변

0

grep은 쉘 변수를 전달하지 않을 것입니다. 쉘은 요청 된 프로그램을 시작하기 전에 변수를 확장/대체합니다. 그래서 GREP은

... | grep trunk-index FOR in footer | ... 

로 호출 일부 존재하지 않는 파일 FOR, infooter에 문구 trunk-index 검색 결국 되 고 생각한다.

대신

... | grep '$grepper' | ... 

보십시오.

+0

나는 이것을 시도했지만 echo $ a를 수행 할 때 아무 것도 출력하지 않는다. grep이 변수에 공백이 포함될 수 있음을 어떻게 이해합니까? 또는 사용자에게 마지막 수단으로 수행해야하는 공백을 두지 말아야합니다. grep의 직업이 아닌 – Lego

+0

입니다. 적절한 논증을 전달하는 것이 당신의 일입니다. grep은 하나의 검색어 만 허용하므로 임의의 문자열을 단일 인수로 처리해야합니다. 그러므로 내 대답은'''따옴표이다. –

+1

그러면 리터럴 문자열' '$ grepper''가'grep' 명령에 전달됩니다. '$ grepper' 변수의 내용을 확장하려면 큰 따옴표를 사용하십시오 :'... | grep "grepper"| ... '. 이 경우 큰 따옴표는 쉘이'$ grepper'의 값을 공백을 포함하고 있더라도 하나의 "단어"로 취급합니다. –

관련 문제