在 Fish shell 中使用 bash 命令运行 for 循环

在 Fish shell 中使用 bash 命令运行 for 循环

我正在尝试在鱼壳上运行一个简单的命令,但无法执行。它只是不断地添加行让我添加额外的数据,不确定如何相应地执行。

$ for acc in `cat uniprot_ids.txt` ; do curl -s "https://www.uniprot.org/uniprot/$acc.fasta" ; done > uniprot_seqs.fasta

在此输入图像描述

答案1

Fish 不兼容 bash,但使用它自己的脚本语言。

在这种情况下,唯一的区别是

  1. 它不支持反引号(```),而是使用括号。
  2. for 循环不使用 do/done,而是以“end”结尾

for acc in (cat uniprot_ids.txt); curl -s "https://www.uniprot.org/uniprot/$acc.fasta" ; end > uniprot_seqs.fasta

另外,命令替换仅在换行符上分割,而不是在换行符/空格/制表符上分割,但我敢打赌无论如何这都有行条目。如果没有,您需要使用string split.

答案2

这对我来说可能很愚蠢,在我真正想做的事情前面使用 bash 命令使得这成为可能:

bash -c 'for acc in `cat meltome_protein_ids.txt` ; do curl -s "https://www.uniprot.org/uniprot/$acc.fasta"; done > uniprot_seqs.fasta'

相关内容