따옴표가 있어도 어떻게 작동하지 않을 수 있습니까?

따옴표가 있어도 어떻게 작동하지 않을 수 있습니까?

파일 이름의 공백을 처리하려면 전체 파일 이름을 따옴표 사이에 넣어야 한다는 것을 알고 있지만 이 스크립트에서는 작동하지 않습니다. 실제로 반대 현상이 발생하고 따옴표 없이만 작동합니다. 이유를 이해할 수 없습니다. 테스트 목적으로 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따옴표는 실제로 텍스트의 일부가 됩니다.

관련 정보