2012-10-15 6 views
34

경로를 가리키는 변수가있는 속성 파일을 (원본을 원본으로하여) 사용하는 주 파일이 있습니다.공백이있는 경로를 입력하는 방법은 무엇입니까?

특성 파일은 다음과 같습니다

TMP_PATH=/$COMPANY/someProject/tmp 
OUTPUT_PATH=/$COMPANY/someProject/output 
SOME_PATH=/$COMPANY/someProject/some path 

문제는 내가 공백이있는 경로를 (내가 그것을 변경할 수 없습니다)를 사용해야합니다, SOME_PATH입니다.

공백을 이스케이프 처리했지만 따옴표는 사용하지 않았지만 지금까지는 해결 방법이 없습니다.

내가 경로를 편집, 작은 따옴표의 문제는 내가

답변

45

를 사용하여 이들 중 하나 파일의 내용을 모두 인용하고 file.txt에서 임의의 코드를 실행할 위험이 없으므로 더욱 안전합니다.

+0

마지막으로 내게 해주었습니다. 고마워요 – CW0007007

+0

@ CW0007007 : 사실 세 가지 모두 맞습니다 –

+0

네,하지만 이미 그 공간을 벗어났습니다. 다른 사람들이 잘못되었다는 말은 아니 었습니다. – CW0007007

1
SOME_PATH=/mnt/someProject/some\ path 

에 또 다른 변수 $COMPANY을 사용하고있다 \ 바로 전에. 파일이 유일한 매개 변수 할당을 포함

SOME_PATH="/mnt/someProject/some path" 
SOME_PATH='/mnt/someProject/some path' 
SOME_PATH=/mnt/someProject/some\ path 
+0

참으로 내가 문자를 탈출 시도하지만, 그 경우에 저를 준다 "/ MNT "경로없이" – Federico

+0

당신의 OS로 뭔가를해야 할 수도 있습니다. 표준 bash 콘솔이 작동해야합니다. 어떤 OS를 사용하고 있습니까? – meza

+0

우분투를 사용하고 있습니다. – Federico

15

당신은으로 바꾸어 "공간"문자를 탈출 할 수 작동합니다 경로

+4

나는 그것을했고, 일하지 않았다 – Federico

+0

우연히 어떤 견적에서 그 길을 감쌌습니까? –

+1

해결되었습니다. 문제는 하나의 참조에서 따옴표가없는 변수였습니다. – Federico

0

경우, 당신이 그것을 소싱의 장소에서 다음 루프를 사용할 수 있습니다 :

# Instead of source file.txt 
while IFS="=" read name value; do 
    declare "$name=$value" 
done < file.txt 

이 당신이 가진 저장 변형 된 threee

+0

이것은 해결책이었을 수 있습니다. 문제는 과제보다 많은 것이 있다는 것입니다. 감사! – Federico

25

저는 직접 해결책을 찾은 Federico를 봅니다. 문제는 두 곳에서 발생했습니다. 귀하의 경우 적절한 할당이 필요합니다.

SOME_PATH="/$COMPANY/someProject/some path" 

은 가능한 해결책 중 하나입니다. 하지 않으면 것은, 공간이되기 때문에

NEW_VAR="$SOME_PATH" 

을 :이 변수를 사용하고자 할 때

그러나 쉘에서 그 따옴표가 메모리에 저장되지 않습니다

, 그래서, 당신은 예를 들어, 다시 인용 할 필요가 다음과 같이 명령 수준으로 확장되었습니다.

NEW_VAR=/YourCompany/someProject/some path 

원하는 내용이 아닙니다.

1 : 그것은 http://www.cofoh.com/white-shell

+3

이것은 실제로 정답으로 표시되어야합니다. 변수 자체를 인용하는 세부 사항은 사람들을 위로하는 주요한 것 같습니다. (나를 포함합니다!) – pospi

+0

나를 도왔던 정보의 중요한 비트는 변수 정의 중에 사용 된 따옴표가 값의 일부가되지 않는다는 사실이었습니다 변수가 사용되면 변수를 다시 인용해야합니다. – bassim

0

우분투의 경로가 "디렉토리의/홈/EC2 사용자/이름"의 경우,이 작업을 수행에 대한

추가 정보를 위해 당신은 내 기사를 확인하실 수 있습니다) 자바 빌드.등록 정보 파일 : ~//home/ec2-user

2) Jenkinsfile 같다

build_path='/home/ec2-user/Name\\ of\\ Directory' 

:/someProject/일부

build_path=buildprops['build_path'] 
echo "Build path= ${build_path}" 
sh "cd ${build_path}" 
관련 문제