2011-11-28 3 views
0

다음은 내 코드의 약간 :저장 스크립트 내에서 출력으로 에코

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 

이 루프는 "에코"출력 인 경우; 그러나 나는 에코 출력을 어떤 파일에 저장하기를 희망한다. 그리고이 WITHIN 스크립트를 관리하고 싶습니다. 아마 sth을 의미합니다. like :

`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 

하지만 분명히 작동하지 않습니다. 스크립트 내에서 에코 출력을 저장하는 올바른 방법을 묻습니다.

들으

답변

0

그냥 역 따옴표를 제거하고 리디렉션을 유지한다.

또는 당신에게 for 전에

exec >output 

수 있습니다.

1

>> output을 각각의 에코 라인에 추가 할 수 있습니다.

echo 또한 스크립트에 중복되어 있습니다. 대신

echo `cat ...` 

의 대신``의 $ (...)를 사용하여 항상

cat ... 
+0

들으과 같은 작업을 수행 할 수 있습니다 cat 명령을 사용하여, 당신은 : – user815408

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 제안

,이 여전히 우리가 head

+2

좋은 충고를 잘하지만, 이것은 여전히 ​​고양이의 쓸데없는 사용입니다. 'head'는 파일 이름을 직접 전달할 수 있습니다. – Sorpigal

+0

전적으로 동의합니다! –

관련 문제