Версия Python 3 устарела для Mint 20.1

У вас нет новой строки между значениями. Следовательно, вам нужно указать разделитель через-d:

mapfile -d ' ' Latitude < final_ADCP_Saved.matLatitude.txt
mapfile -d ' ' Longitude < final_ADCP_Saved.matLongitude.txt

Теперь каждая широта/долгота должна быть правильно помещена в отдельный элемент массива.

РЕДАКТИРОВАТЬ :Вариант -dкажется современным башизмом. Другим способом исправить это может быть использование trдля преобразования пробелов в новые строки (и использование -sдля удаления дубликатов):

tr -s ' ' '\n' < final_ADCP_Saved.matLatitude.txt | mapfile Latitude

К сожалению, это не работает, так как конвейер заставляет mapfileзапускаться в подоболочке, и, следовательно, переменная недоступна в основной оболочке.

Обходной путь: сначала изменить стандартный ввод оболочки на подстановку процесса, а затем запуститьmapfile:

#!/bin/bash

exec < <(tr -s ' ' '\n' < final_ADCP_Saved.matLatitude.txt)
mapfile Latitude
exec < <(tr -s ' ' '\n' < final_ADCP_Saved.matLongitude.txt)
mapfile Longitude

echo "length of Lat is ${#Latitude[@]}"
echo "length of Lon is ${#Longitude[@]}"

Обратите внимание, что я изменил первую строку на #!/bin/bash, так как это будет работать только в bash.

РЕДАКТИРОВАТЬ2

Теперь я думаю об этом, часть execне нужно делать отдельно:

#!/bin/bash

mapfile Latitude < <(tr -s ' ' '\n' < final_ADCP_Saved.matLatitude.txt)
mapfile Longitude < <(tr -s ' ' '\n' < final_ADCP_Saved.matLongitude.txt)

echo "length of Lat is ${#Latitude[@]}"
echo "length of Lon is ${#Longitude[@]}"
0
23.04.2021, 10:50
0 ответов

Теги

Похожие вопросы