1

Если у меня есть этот массив

arra[0]='Debian'
arra[1]='Debian'
arra[2]='Ubuntu'
arra[3]='Suse'

Как я могу хранить только новый массив Debian, Ubuntu и Suse? как это

new[0]='Debian'
new[1]='Ubuntu'
new[2]='Suse'

1 ответ1

1

Рабочий ответ:

eval newArray=($(for i in  "${arra[@]}" ; do  echo "\"$i\"" ; done | sort -u))

Он работает с пробелами в элементах массива, как в 'Red Hat': вам нужно вывести кавычку "" вокруг значения вашей переменной ("\"$i\"") и eval результат.

Более элегантная альтернатива

eval newArray=($(printf "%q\n" "${arra[@]}" | sort -u))

где формат %q необходим для кавычек вывода printf .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .