我有以下 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"
;您需要这样做才能保持文件名中的空格完整并且不会被 shell 解析。
for r in *.fastq
do
# Stuff using "$r"...
:
done