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'

관련 정보