我有一個包含文件名列表的文件,我嘗試將其用作特定文件下載工具(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 ^
所以有四個字。您的原始行被作為一個整體引用並解釋為一個單詞,即命令名稱。由於您的“命令名稱”以 開頭./
,因此它必須是檔案或目錄。但沒有具有字面名稱的檔案或目錄./fastq-dump -O ../../DATA_fastQ/ SRR1975008
,因此出現錯誤。
我引用了<path_to_tool>/fastq-dump
以防<desired_output_directory/
萬一實際值包含空格和/或類似內容。從錯誤訊息中我可以看出他們沒有,但一般來說他們可能會。
您引用非常好(例如此處done <"$input"
:)。問題是您使用了一對引號,其中某些字串必須單獨處理。