2009-12-29 5 views
1

실행할 SCP 명령을 생성하는 bash 스크립트가 있습니다. 코드의 관련 부분은 다음과 같이 :bash 스크립트에서 공백이있는 경로를 SCP 할 수 없습니까?

echo $COPY_CMD 
$COPY_CMD 

내 출력은 다음과 같습니다

 
[email protected]:~/Desktop/video_final$ ./xfervids.sh 
scp "/media/My Book/PhotosVideos/Videos/18May2008Download/SD_VIDEO/PRG001/MOV056.MOD" [email protected]:./video_working/ 
[email protected]'s password: 
"/media/My: No such file or directory 
Book/PhotosVideos/Videos/18May2008Download/SD_VIDEO/PRG001/MOV056.MOD": No such file or directory 

을하지만, 내 출력 라인이 걸릴 때 : 복사, scp "/media/...을, 그리고에 붙여 넣습니다 터미널, 작동합니다.

내가 뭘 잘못하고 있니? My Book "("My\ Book")의 공간을 벗어나기 위해 \ 개 문자 ("My\\ Book")가 아닌 두 개의 문자를 넣으려고했지만 일관되게 동작하지 않습니다. 도움?

답변

5

경로 이름에 공백이 있으면주의해야합니다. 맥락에서

, 당신은 아마 필요 : 당신은 변수 따옴표이 시간이 필요하지 않습니다

eval $COPY_CMD 

.

+1

'eval' bash 명령을 완전히 알지 못했습니다. 고맙습니다! – poundifdef

4

의 보안 의미가있는 this discussion을 사용하는 이유와 이유는 무엇입니까?

이런 식으로 변수를 사용하려는 이유 중 하나는 스크립트에서 수행 한 작업을 기록하거나 표시하는 것입니다. 문제는 발견 한대로 공백을 적절히 인용하거나 이스케이프 할 수있는 경우 발생합니다. 한 가지 방법은 set -xset +x을 사용하여 스크립트의 다양한 지점에서이 유형의 출력을 설정 및 해제하는 것입니다.

+0

그럼에도 불구하고 내 작은 집 DVD 굽기 스크립트에 대한 과잉 공격이지만, 그럼에도 불구하고 좋은 정보. – poundifdef

관련 문제