Bash if-then-else语句将不能正确循环
我想到了如何让一个Bash if-then-else语句将不能正确循环,bash,loops,if-statement,Bash,Loops,If Statement,我想到了如何让一个if-then-else语句工作,但现在它似乎坏了=(我搞不清楚出了什么问题 /中最多有10个名为barcode01-09的目录和一个名为unclassified的目录。这个脚本应该进入每个目录,为~/Taxonomy.R准备目录(这需要将所有fastq文件压缩并放入名为“data”的子目录中)。然后,它运行~/Taxonomy.R脚本,为每个脚本创建一个元数据文件 Edit使用ls>tmp.txt创建tmp.txt文件,然后echo“0”>>tmp.txt创建一个目录牺牲列表
if-then-else
语句工作,但现在它似乎坏了=(我搞不清楚出了什么问题
/
中最多有10个名为barcode01-09
的目录和一个名为unclassified的目录。这个脚本应该进入每个目录,为~/Taxonomy.R
准备目录(这需要将所有fastq文件压缩并放入名为“data”的子目录中)。然后,它运行~/Taxonomy.R
脚本,为每个脚本创建一个元数据文件
Edit使用ls>tmp.txt
创建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
目前,它只在第一个条形码目录中创建元数据文件。如果缩进代码,事情会变得更清楚。 另一方面,以这种方式修改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
!/bin/bash
源停用
源激活R-Env
价值$(作为一条一般性建议,如果您在每个块中使用固定数量的空格对代码进行缩进,将提高代码的可读性。如果您显示一个示例tmp.txt、包含文件的示例目录结构以及一个示例预期结果,这将有所帮助。我们可以尝试并推断它,但您为我们制作的最简单的示例,答案就越好你会得到更多(更快)。