为什么我无法将bash输出存储到shell?

时间:2015-10-07 21:57:07

标签: bash

我有以下脚本:

#!/bin/bash

…code setting array ids, etc…

for i in "${!ids[@]}" ; do
      echo "#${ids[i]}_${pos[i]}_${wild[i]}_${sub[i]}"
      curl -sS "http://www.uniprot.org/uniprot/"${ids[i]}".fasta";
done |
sed '/^>/ d' |
sed -r 's/[#]+/>/g' |
perl -npe 'chomp if ($.!=1 && !s/^>/\n>/)' > $id.pph.fasta

但是结果不会存储在文件中。我可以通过执行以下操作将结果输出到终端并存储在文件中:

./myscript > result.txt

但是我想在脚本中执行此操作并输出到循环外的文件。

2 个答案:

答案 0 :(得分:1)

以下是您的脚本的变体:

#!/bin/sh
for i in ${!ids[*]}
do
  echo ">${ids[i]}_${pos[i]}_${wild[i]}_${sub[i]}"
  curl -Ss www.uniprot.org/uniprot/${ids[i]}.fasta
done |
awk '
/>/ {if (z++) printf RS; print; printf RS; getline; next}
1
END {printf RS}
' ORS= > $id.pph.fasta

答案 1 :(得分:1)

添加

exec 1>result.txt

到脚本的顶部,所有输出都将被重定向。