2015-10-07 33 views
0

我有以下腳本:爲什麼我無法將bash輸出存儲到shell中?

#!/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

您正在寫'$ id.pph.fasta'。什麼是'$ id'? –

+2

看起來$ $ id在你的腳本中是未定義的,在這種情況下,你的管道的輸出將轉到'.pph.fasta'(一個隱藏的文件)。 –

回答

1

添加

exec 1>result.txt 

到腳本的頂部,所有的輸出將被重定向。

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 
相關問題