Предположим, что вы делаете это вbash
:
sequence="AAAGCATATGCTAGCCCGTATAGCGATACTAGCTATACGATATATATGATCAATGCCCGTATAG"
for (( i = 0; i < ${#sequence}; i += 3 )); do
printf '%s\n' "${sequence:i:3}"
done
Это повторяется по всей длине последовательности, по три пары оснований -за раз. На каждой итерации печатается следующая группа из трех оснований.
Чтобы поместить их в массив, seq
вместо того, чтобы распечатывать их:
sequence="AAAGCATATGCTAGCCCGTATAGCGATACTAGCTATACGATATATATGATCAATGCCCGTATAG"
for (( i = 0; i < ${#sequence}; i += 3 )); do
seq+=( "${sequence:i:3}" )
done
Это дает вам массив seq
. Отдельные элементы массива доступны как "${seq[0]}"
, "${seq[1]}"
и т. д.
Чтобы получить две другие рамки считывания , измените цикл так, чтобы он начинался с 1 или 2.
Ошибка, вероятно, связана с тем, что вам нужен пробел после ==
, однако вы не сможете использовать такие подстановочные знаки в расширенном тесте. Вы можете использовать =~
для сопоставления регулярных выражений (что-то вроде AllBoxes.*
), однако, если вы процитируете его, оно будет обработано буквально. Если вас интересуют только файлы AllBoxes
, вы можете просто изменить цикл на:
for pdb in "${storage}/${experiment}"/AllBoxes*.pdb ; do