루프를 실행하여 부분 파일 이름을 추출하고 일부 명령을 실행합니다.

루프를 실행하여 부분 파일 이름을 추출하고 일부 명령을 실행합니다.

저는 bash 스크립팅을 처음 접했습니다. 다른 디렉터리에 일부 파일이 있고 파일 이름이나 디렉터리 이름의 일부를 추출하고 해당 부분으로 변수를 만들고 해당 변수를 다른 명령에 적용하려고 합니다. 내 디렉터리와 파일 이름은 다음 패턴을 따릅니다.

user/Sample_001_002_5/001_002_5_fgdfgh_hgf00.gz
user/Sample_254_128_3/254_128_3_wserer_hgf00.gz

변수를 설정하는 방법을 알 수 있을까요? i=001_002_5 i=254_128_3 다음 스크립트를 작성했지만 명령에서 인식되지 않습니다.

dir=/users/Sample_*

for DIR in $dir

do i= basename ${DIR} | cut -c 8-

R="${DIR}/${i}*.gz"   # Run correctly#

echo $i               # run correctly#

echo $R               # run  correctly#

echo '@RG\tID:MCW\tSM:'${i}'\tPL:Illumina\tPU:'${i}"   ### in this command i is not recognized######

done

답변1

이것이 문제의 원인인지는 모르겠지만 문제의 줄 끝에 있는 큰따옴표가 일치하지 않습니다.

(또한 echo는 원하는 경우 \t를 리터럴 대신 탭으로 처리하기 위해 "-e" 인수를 취해야 합니다. 나는 이것이 $i와 아무 관련이 없다는 것을 알고 있습니다.)

관련 정보