2016-10-06 3 views
0

이유는이 명령이 작동

sudo rm -rf "${server_tomcatHomeDir}temp/*" 

그것은 단지 따옴표와 관련,하지만 왜이 명령도 작동 될 수 인용 된 args :

sudo cp "$HOME/${artifact}" "${server_tomcatHomeDir}/webapps/${webapp}" 

나는 이해할 수 없다. 누구든지 명확히 할 수 있습니까?

첫 번째 명령에서 따옴표를 사용하여 글초 및 단어 분할을 막으려합니다. 당신은 따옴표의 * 외부 넣어야 할

+0

"작동하지 않음"- 그렇지 않습니다. 그것은 주어진 디렉토리 내에서'*'라는 파일을 삭제할 때 완벽하게 잘 작동한다. :) –

+1

'/'를'temp' 앞에 넣으십시오. $ server_tomcatHomeDir이'/'로 끝나면 두 개의'/'를 가지지 만,'$ server_tomcatHomeDir'이'/'로 끝나지 않으면 코드가 제대로 작동하지 않습니다. – chepner

답변

3

여기 *은 파일 이름에 (0을 포함) 문자의 수와 일치하는 경로 확장 (글로브) 토큰이며, 그것은 이 아니고가 인용 부호 안에있을 때 확장됩니다. 문자 그대로 취급됩니다.

해야 할 것 : 단어 분할 및 경로 확장을 방지하기 위해 파일 이름을 처리 특히 때, 거의 항상 변수를 인용하는 것이 좋습니다,

sudo rm -rf "${server_tomcatHomeDir}"temp/* 

참고.

1

, 그래서

sudo rm -rf "${server_tomcatHomeDir}temp/"*