Shell Script에서 for과 함께 ls 사용 시 파일명 공백 문제

ljh723의 이미지

파일명: hello world.txt

위 파일명 대로라면 for문은 한바퀴만 돌아야 하지만

#!/bin/bash
for fileName in `ls /data/`
do
  echo $fileName
done

실제로는
hello
world.txt

이렇게 됩니다..
어떻게 하면 공백 문제를 해결 할 수 있을까요?
ls를 꼭 사용해야 합니다

st7081k의 이미지

for 구문은 공백이 필드구분자로 인식됩니다.
따라서 "" 를 넣어서 한단어로 인식시키면 원하시는 출력문이 나올겁니다.

#!/bin/bash

for fileName in "`ls /data/`"
do
echo $fileName
done

bushi의 이미지

#!/bin/bash
for fileName in /data/*
do
  echo $fileName
done
이름이 같다네.의 이미지

$ cat hello.sh 
#!/bin/bash
for fileName in $(ls $PWD | tr ' ' '$'); do
        echo $fileName | tr '$' ' '
done
$ ls
'hello world.txt'   hello.sh
$ sh hello.sh
hello world.txt
hello.sh