我想出了如何使if then else
语句起作用的方法,但是现在看来它已经坏了。 =(我无法找出问题所在!
./
中最多有10个目录称为barcode01 - 09
,其中一个目录称为未分类。该脚本应该进入每个脚本,为~/Taxonomy.R
准备目录(这要求将所有fastq文件压缩并放入名为“ data”的子目录中。然后运行~/Taxonomy.R
脚本为每个脚本创建元数据文件。
编辑 tmp.txt
文件是使用ls > tmp.txt
然后使用echo "0" >> tmp.txt
创建的,以牺牲性的目录列表形式供脚本浏览,然后在获取脚本时停止到0。
#!/bin/bash
source deactivate
source activate R-Env
value=(sed -n 1p tmp.txt)
if [ "$value" = "0" ]
then
rm tmp.txt
else
cd "$(sed -n 1p tmp.txt)"
gzip *fastq
#
for i in *.gz
do
mv "$i" "${i%.*}_R1.fastq.gz";
done
#this adds the direction identifier "R1" to all the fastq.gzips
mkdir Data
mv *gz Data
~/Taxonomy3.R
cd Data
mv * ..
cd ..
rm -r Data
cd ..
sed '1d' tmp.txt > tmp2.txt
mv tmp2.txt tmp.txt
fi
当前,它仅在第一个条形码目录中制作元数据文件。
答案 0 :(得分:1)
如果您缩进代码,事情将会变得更加清晰。 另一方面,用这种方式修改您的tmp.txt文件既慢又危险。最好只阅读就遍历其内容。
#!/bin/bash
source deactivate
source activate R-Env
for value in $(<tmp.txt)
do
cd "$value"
gzip *fastq
for i in *.gz
do
# This adds the direction identifier "R1" to all the fastq.gzips
mv "$i" "${i%.*}_R1.fastq.gz"
done
mkdir Data
mv *gz Data
~/Taxonomy3.R
mv Data/* .
rmdir Data
cd -
done
rm tmp.txt
使用此重新编写的脚本,您只需要创建tmp.txt
文件,而无需在末尾添加任何标记(实际上,您根本不需要它,可以检查空文件)。
对于脚本中的每个文件夹,执行所需的操作。我简化了一些文件夹更改,将其最小化为R脚本正确运行所需的文件夹。回过头来,我使用了cd -
,该文件转到上一个文件夹,这样您的tmp.txt
文件中可以有多个leven。
希望其他一切都清楚。