통계는 공백에서 작동하지 않습니까?

통계는 공백에서 작동하지 않습니까?

스크립트를 사용하여 생성된 연도에 따라 일부 파일을 복사하고 있습니다. 공백이 없는 파일에는 잘 작동하지만 공백이 있는 파일에 대한 stats 명령에는 문제가 있습니다. 예를 들어 다음 파일이 있습니다.file with spaces.pdf

stat -c %y ./path/to/file\ with\ spaces.pdf|cut -d '-' -f 1

연도를 반환합니다. 예:2017

그러나 스크립트에서 사용되는 경우:

year=$(stat -c %y $pathfile | cut -d '-' -f 1)

다음 출력을 사용하면 작동하지 않는 것 같습니다.

 echo "stat -c %y file | cut -d '-' -f 1"

터미널에 복사하면 작동합니다. 파일 이름의 이 부분을 무시하는 등 모든 경우에 오류가 동일합니다 with\ spaces.pdf. ::

stat: cannot stat './path/to/file\': No such file or directory

경로에 따옴표를 추가하려고 시도했지만 작동하지 않는 것 같습니다.

year=$(stat -c %y "$pathfile" | cut -d '-' -f 1)

어딘가에서 통계를 함수에 넣어야 한다는 것을 보고 다음과 같이 했습니다.

 makestats () {
 $(stat -c %y $1|cut -d '-' -f 1)
 }

하지만 작동하지 않는 것 같습니다. 동일한 오류가 발생합니다. 도움을 주시면 좋을 것 같습니다.

답변1

변수를 인용하십시오 bash. 그렇게 하지 않으면 변수의 단어가 개별 토큰으로 분할되고 변수를 사용하는 명령은 단일 문자열이 예상될 때 여러 단어를 가져옵니다(참조분사쉘에서)

year=$(stat -c %y "$pathfile" | cut -d '-' -f1)

귀하의 문제는 사용중인 변수 "\이스케이프 시퀀스에 있다고 생각합니다. 둘 중 하나를 수행해야 합니다.

pathfile="/path/to/file with spaces"

관련 정보