最近我一直在撿起Bash,並且在圍繞嵌套循環的時候遇到了麻煩。在bash中使用嵌套循環以字符數組替換字符串中的字符
這就是我得到的。
input='ATAATAATAATG'
CODONTABLE=(ATA I ATC I ATT I ATG M ACA T
ACC T ACG T ACT T AAC N AAT N
AAA K AAG K AGC S AGT S AGA R
AGG R CTA L CTC L CTG L CTT L
CCA P CCC P CCG P CCT P CAC H
CAT H CAA Q CAG Q CGA R CGC R
CGG R CGT R GTA V GTC V GTG V
GTT V GCA A GCC A GCG A GCT A
GAC D GAT D GAA E GAG E GGA G
GGC G GGG G GGT G TCA S TCC S
TCG S TCT S TTC F TTT F TTA L
TTG L TAC Y TAT Y TAA _ TAG _
TGC C TGT C TGA _ TGG W)
for ((i=0;i<${#input};i++)) ; do
let w+=1
for c in $input ; do
for h in $CODONTABLE ; do
if [ $(echo ${input:x:3})=$(echo $CODONTABLE[w]) ] ; then
mod+=(${CODONTABLE[w]})
let x+=1
else
let w+=1
fi
done
done
done
echo $mod
echo $input
我從這個得到的是...
ATAATAATAATG
I
如此看來,至少ATA被正確地翻譯成一 不過,我要的是
**ATA**ATAATAATG -> I
A**TAA**TAATAATG -> _
AT**AAT**AATAATG -> N
ATA**ATA**ATAATG -> I
這樣最終的輸出就是I_NI_NI_NM
,我後面會用到它。
總之,我如何創建一個適當的重複循環,通過我的輸入,翻譯每個可能的3個字符的框架,並將其附加到另一個數組?
哇!這種寶貴的建議。聽到你的幫助。你對我的錯誤的假設是正確的,在仔細檢查你的建議之後,我發現了很多我之前關於bash腳本誤解的東西。 – Roeben 2014-10-26 20:15:51