答案1
Fish 不兼容 bash,但使用它自己的脚本语言。
在这种情况下,唯一的区别是
- 它不支持反引号(```),而是使用括号。
- 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'