次の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