다음 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