特定のファイルダウンロードツール(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
私が間違っているところへのポインタをいただければ幸いです!
この行
"<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つの単語があります。元の行は全体として引用され、コマンド名という1つの単語として解釈されました。「コマンド名」はで始まる./
ため、ファイルまたはディレクトリである必要があります。しかし、リテラル名のファイルまたはディレクトリがない./fastq-dump -O ../../DATA_fastQ/ SRR1975008
ため、エラーが発生します。
実際の値にスペースなどが含まれている場合に備えて、引用<path_to_tool>/fastq-dump
しました<desired_output_directory/
。エラーメッセージから、そうではないと言えますが、一般的にはそうかもしれません。
あなたが引用するのはとても良いことです(例えばここ:) done <"$input"
。問題は、特定の文字列を個別に処理する必要がある1組の引用符を使用したことでした。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加