Viji
@Viji
Junior DevOps Engineer

Куда исчезают new line characters из массива элементов?

Привет всем,

не пойму куда исчезают new line characters в след коде:

#!/bin/bash

declare -a dir_array

while IFS=  read -r -d $'\0'; do
        tmp="${REPLY#./}"
        dir_array+="$tmp\n"
done < <(find . -maxdepth 1 ! -path . -type d -print0)

readarray -t sorted < <(for a in "${dir_array[@]}"; do printf "$a"; done | sed '/^[[:space:]]*$/d' | sort)

emp="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"

printf "${dir_array[*]}"
printf $emp
printf $emp
printf $emp
printf "${sorted[*]}"


При этом первый массив, dir_array печатается правильно, в столбик, а второй sorted сплошной линией?

всем добра,
Вадим
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ответы на вопрос 1
svsd_val
@svsd_val
Разработчик & администратор M$, GNU/Linux
Добавь, IFS=$'\n'; выше readarray -t и всё будет работать =)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы