파일 이름의 공백을 처리하려면 전체 파일 이름을 따옴표 사이에 넣어야 한다는 것을 알고 있지만 이 스크립트에서는 작동하지 않습니다. 실제로 반대 현상이 발생하고 따옴표 없이만 작동합니다. 이유를 이해할 수 없습니다. 테스트 목적으로 gnome-terminal
.
echo "Drag and drop some file"
read FILE
NAME=$(basename "$FILE")
cp "$FILE" ~/foo/bar/"$NAME" && echo "Success!"
답변1
read
예를 들어 차이점을 설명할 수 있기를 바랍니다. 작은따옴표 사이에 있는 내용은 명령에 입력한 내용과 같습니다.
이름을 입력하시오인용없이:
f='file 1'
touch "$f"
ls --literal -l "$f"
-rw-r--r-- 1 glennj glennj 0 Sep 13 01:57 file 1
이름을 입력하시오그리고인용 부호:
f='"file 2"'
touch "$f"
ls --literal -l "$f"
-rw-r--r-- 1 glennj glennj 0 Sep 13 01:57 "file 2"
이 경우 큰따옴표는 리터럴 문자이며 실제로 파일 이름의 일부입니다.
입력에 따옴표를 사용하면 read
따옴표는 실제로 텍스트의 일부가 됩니다.