Bash 스크립트 분할 파일 이름

Bash 스크립트 분할 파일 이름

다음 bash 스크립트가 있습니다.

#!/bin/bash

for r in $(find . -name "*.fastq");
do

  cat <<EOF
  #qsub <<EOF
#!/bin/bash -l

#PBS -N $r

EOF

done

안타깝게도 모든 파일 이름이 분할됩니다.

> sh  cFiltering_pbs.sh 
  #qsub <<EOF
#!/bin/bash -l

#PBS -N ./76A

  #qsub <<EOF
#!/bin/bash -l

#PBS -N Paired.fastq

  #qsub <<EOF
#!/bin/bash -l

#PBS -N ./104A

  #qsub <<EOF
#!/bin/bash -l

#PBS -N Paired.fastq

다음은 찾기 출력입니다.

find . -name "*.fastq"
./76A Paired.fastq
./104A Paired.fastq

내가 놓친 게 무엇입니까?

답변1

find를 사용하는 대신 파일 자체를 간단히 반복할 수 있습니다. 주위에 큰따옴표를 넣었다는 점에 유의하십시오 "$r". 파일 이름의 공백을 그대로 유지하고 쉘에서 구문 분석하지 않으려면 이것이 필요합니다.

for r in *.fastq
do
    # Stuff using "$r"...
    :
done

관련 정보