以下是我的一些代码:
for((a=1;a<=8000000;a++))
do
if (($a%4==0))
then
b=`cat 101127_2_aa_1.fastq|head -$a|tail -1|sed 's/\(.\)B*$/\1/g'|wc -c`
echo `cat 101127_2_aa_1.fastq|head -$(($a-3))|tail -1`
echo `cat 101127_2_aa_1.fastq|head -$(($a-2))|tail -1|cut -c 1-$(($b-1))`
echo `cat 101127_2_aa_1.fastq|head -$(($a-1))|tail -1`
echo `cat 101127_2_aa_1.fastq|head -$a|tail -1|sed 's/\(.\)B*$/\1/g'`
fi
done
这个if循环是“echo”输出;但是我希望将echo输出保存到某个文件中。我想管理这个WITHIN脚本。 我的意思是......像:
`for((a=1;a<=8000000;a++))
do
if (($a%4==0))
then
b=`cat 101127_2_aa_1.fastq|head -$a|tail -1|sed 's/\(.\)B*$/\1/g'|wc -c`
echo `cat 101127_2_aa_1.fastq|head -$(($a-3))|tail -1`
echo `cat 101127_2_aa_1.fastq|head -$(($a-2))|tail -1|cut -c 1-$(($b-1))`
echo `cat 101127_2_aa_1.fastq|head -$(($a-1))|tail -1`
echo `cat 101127_2_aa_1.fastq|head -$a|tail -1|sed 's/\(.\)B*$/\1/g'`
fi
done` > output
但显然这不起作用;我要求在脚本中保存回声输出的正确方法。
THX
答案 0 :(得分:3)
使用$(...)代替``。
总是一个好习惯for((a=1;a<=8000000;a++))
do
if (($a%4==0))
then
b=$(cat 101127_2_aa_1.fastq|head -$a|tail -1|sed 's/\(.\)B*$/\1/g'|wc -c)
echo $(cat 101127_2_aa_1.fastq|head -$(($a-3))|tail -1)
echo $(cat 101127_2_aa_1.fastq|head -$(($a-2))|tail -1|cut -c 1-$(($b-1)))
echo $(cat 101127_2_aa_1.fastq|head -$(($a-1))|tail -1)
echo $(cat 101127_2_aa_1.fastq|head -$a|tail -1|sed 's/\(.\)B*$/\1/g')
fi
done >> output
<强>更新强>
正如 @Sorpigal 建议的那样,当我们对cat
head
命令
答案 1 :(得分:1)
您可以将>> output
附加到每个回显线。
此外,echo
在您的脚本中是多余的。而不是
echo `cat ...`
你可以使用
cat ...
答案 2 :(得分:0)
只需删除反引号并保持重定向。
或者你可以
exec >output
在for
。