我是Shell脚本的新手。在bash中,我试图在遍历列表时将find的输出分配给新变量。
for i in {25,27}; do
r1=$(find $i*R1_001.fastq.gz)
r2=$(find $i*R2_001.fastq.gz)
done
我要发生的事情是为计算分配文件名到r1和r2。例如:
$ echo $ r1
25-NVB206M02_S27_R1_001.fastq.gz
但是,计算机会将其解释为*不是通配符。我收到一条错误消息:
查找:`25 * R1_001.fastq.gz':无此类文件或目录
感谢您提供的任何建议。
答案 0 :(得分:0)
如果要使用find,则需要类似以下内容的
:r1=$(find . -name "${i}*R1_001.fastq.gz" | sed 's#^.*/##')
或者更好的是,您可以使用:
r1="${i}*R1_001.fastq.gz"
请注意,您可能与此匹配0个或多个文件。例如,如果多个文件匹配,则i=2
和r1
会匹配r2
,2-NVB...
,20-NVB...
,{{1} }, 等等。您可能只希望变量包含单个文件名。尝试收紧匹配的内容。
如果没有匹配的文件21-NVB...
可能仍不为空。示例:
200-NVB...