Почему мой массив bash всегда имеет длину 1, когда я разделяю?

# Create array arrayLong=(one two three four) for element in "${arrayLong[@]}" do echo "$element" done echo "${#arrayLong[@]}" 

Вывод:

 one two three four 4 

Затем:

 # Make new array with only first half of values arrayShort=("${arrayLong[@]:0:2}") for element in "${arrayShort[@]}" do echo "$element" done echo "${#arrayShort[@]}" 

Результатом этого является

 one two 1 

Почему мой короткий массив не является массивом? Это всего лишь один элемент. Как я могу разделить мой массив, когда результаты будут заполнены на массивах?

Моя версия bashGNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)

  • Длина массива скриптов Bash Shell Off by One
  • Запись массива по умолчанию в переменную Bash
  • Сохранить результат grep для массива
  • найти дубликат в первых, вторых столбцах и числах в третьем столбце
  • Плохая ошибка замещения в zsh shell
  • Сопоставьте данные из массива с данными из файла?
  • удаление резервной копии из массива с помощью hpacucli
  • Сгенерировать массив строк в сочетании с числом
  • One Solution collect form web for “Почему мой массив bash всегда имеет длину 1, когда я разделяю?”

    Я не знал, что IFS автоматически не сбрасывается после его использования. Ранее в коде я установил IFS=$'\n' без сохранения исходного значения. Вот что я должен был сделать:

     # set Internal Field Separator to new line only to split files oIFS="$IFS" IFS=$'\n' array=(${all_files}) # Return IFS to initial value IFS="$oIFS" 

    Чтобы проверить, что такое IFS в данный момент, попробуйте printf "%q\n" "$IFS" . Значение по умолчанию должно быть $' \t\n'

    Спасибо @MiniMax & @Jesse_b за помощь в этом.

    Interesting Posts

    Обратный порядок элементов с точками в строке

    Переменные в истории?

    перепутанные разделы во время установки монетного двора

    Как указать журнал при автозапуске в linux mint

    Переключите ElementaryOS в другой дистрибутив

    Почему один ящик может дешифровать файл с помощью openssl, но другой нельзя?

    Как обновить ядро ​​от 2.6 до последнего?

    Блокирование HTTP-содержимого gzip с помощью Iptables или Snort?

    Удалите программное обеспечение и PPA полностью

    Какие файлы имеет доступ к ядру Linux?

    Как предотвратить интерпретацию клавиатуры текущим приложением?

    LVM файловая система заполнена, не может обновлять систему среди других вещей

    Как найти и заменить текст во всех открытых файлах с помощью gedit?

    Каковы некоторые рекомендации по использованию hdiutil (или других инструментов) для помощи в восстановлении файлов из образа dmg?

    Контейнер Docker не раскрывает порты, когда в команде запуска docker указано –net = host

    Linux и Unix - лучшая ОС в мире.