我写了以下while循环
while IFS= read -r uid; do
echo "$uid" >> output_file
esearch -db nuccore -query "$uid" | elink -target taxonomy | esummary | xtract -pattern DocumentSummary -element TaxId | xargs -n 1 sh -c 'efetch -db taxonomy -id "$0" -format xml' | xtract -pattern Taxon -block "*/Taxon" -unless Rank -equals "no rank" -tab "\n" -element Rank,ScientificName | grep -e "^family" -e "^genus" >> output_file
done < input_file
使用如下所示的input_file
AB439150.1
MN241552.1
MN241574.1
MN411191.1
它仅在第一行工作正常(但如果我在循环中注释掉第二个命令,则可以正常工作)。 esearch
(以及后面的管道命令)输出文本。从其他问题来看,它与grep
有关,而while循环无法读取任何内容。我无法解决这个问题!有人-帮助吗?