Fish Shellでbashコマンドを使用してforループを実行する

Fish Shellでbashコマンドを使用してforループを実行する

Fish Shellで単純なコマンドを実行しようとしていますが、実行できません。追加のデータを追加するために行を追加するだけですが、それに応じて行う方法がわかりません。

$ 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'

関連情報