쉘 스크립트에서 .out 파일을 생성하는 방법은 무엇입니까?

쉘 스크립트에서 .out 파일을 생성하는 방법은 무엇입니까?

이 질문을 어떻게 표현해야 할지 모르겠지만 기본적으로 저는 sam 데이터를 처리하기 위해 쉘 스크립트를 사용해 왔습니다. 이것은 쉘 스크립트입니다.

nano picard_SortandIndex_from_sam.sh

for A in *sam; do ls $A; picard SortSam I=$A O=$A".bam" SO=coordinate CREATE_INDEX=TRUE; done 

이것은 내가 실행하는 명령이며 처리된 모든 sam 파일에 대해 하나의 .out 파일만 얻습니다.

nohup sh picard_SortandIndex_from_sam.sh > picard_SortandIndex_from_sam5_26_21.out &

처리된 각 샘 파일에 대한 요약 파일을 생성할 수 있도록 "picard_SortandIndex_from_sam.sh" 스크립트에서 .out 파일을 생성하는 방법이 있습니까? 거기에 > $A".out" 을 넣으려고 했지만 작동하지 않습니다...

매우 감사합니다!

답변1

나는 당신이 이것을 찾고 있다고 생각합니다 :

for A in *sam; do 
  ls "$A"
  picard SortSam I="$A" O="$A".bam SO=coordinate CREATE_INDEX=TRUE > "$A".out
done

또는 stderr 및 stdout을 원할 가능성이 높으므로 다음을 사용하십시오.

for A in *sam; do 
  ls "$A"
  picard SortSam I="$A" O="$A".bam SO=coordinate CREATE_INDEX=TRUE > "$A".out 2>&1
done

이는 picard각 sam 파일에서 실행되고 명령( > "$A".out) 의 출력을 저장합니다.그리고2>&1파일에 오류()가 생성되었습니다 $A.out.

마지막 참고 사항은 etc. 라는 파일이 생성되므로 foo.sam.bam출력 이름에서 제거하는 foo.sam.bam.bai것이 좋습니다 ..sam

 for A in *sam; do 
  ls "$A"
  fileName=$(basename "$A" .sam)
  picard SortSam I="$A" O="$fileName".bam SO=coordinate CREATE_INDEX=TRUE > "$fileName".out 2>&1
done

대신 foo.bam에서 생성됩니다 .foo.samfoo.sam.bam

관련 정보