특정 파일 다운로드 도구(sratools)에서 입력으로 사용하려고 하는 파일 이름 목록이 포함된 파일이 있지만 내 스크립트에 문제가 있습니다.
#!/bin/bash
input="<path_to_directory>/SRR_Acc_List.txt"
while IFS= read -r line
do
"<path_to_tool>/fastq-dump -O <desired_output_directory/ $line"
echo "Downloading $line file"
done <"$input"
명령은 단일 입력에서 작동하며 에코는 정확하지만 명령 부분에서 오류가 발생합니다.
line 6: ./fastq-dump -O ../../DATA_fastQ/ SRR1975008: No such file or directory
내가 잘못한 부분을 지적해 주시면 감사하겠습니다!
답변1
이 줄
"<path_to_tool>/fastq-dump -O <desired_output_directory/ $line"
해야한다
"<path_to_tool>/fastq-dump" -O "<desired_output_directory/" "$line"
# unquoted spaces ^ ^ they separate words ^
그래서 단어가 4개가 있어요. 원래 줄은 전체적으로 인용되었으며 명령 이름이라는 한 단어로 해석되었습니다. "명령 이름"은 로 시작하므로 ./
파일이나 디렉터리여야 합니다. 그러나 리터럴 이름을 가진 파일이나 디렉터리가 없으므로 ./fastq-dump -O ../../DATA_fastQ/ SRR1975008
오류가 발생합니다.
실제 값에 공백 등이 포함된 경우를 대비하여 <path_to_tool>/fastq-dump
인용 했습니다 . <desired_output_directory/
오류 메시지를 보면 그렇지 않다는 것을 알 수 있지만 일반적으로 그럴 수도 있습니다.
인용하시는 것이 매우 좋습니다(예: 여기: done <"$input"
). 문제는 특정 문자열을 별도로 처리해야 하는 한 쌍의 따옴표를 사용했다는 것입니다.