Если у меня есть этот массив
arra[0]='Debian'
arra[1]='Debian'
arra[2]='Ubuntu'
arra[3]='Suse'
Как я могу хранить только новый массив Debian, Ubuntu и Suse? как это
new[0]='Debian'
new[1]='Ubuntu'
new[2]='Suse'
Если у меня есть этот массив
arra[0]='Debian'
arra[1]='Debian'
arra[2]='Ubuntu'
arra[3]='Suse'
Как я могу хранить только новый массив Debian, Ubuntu и Suse? как это
new[0]='Debian'
new[1]='Ubuntu'
new[2]='Suse'
Рабочий ответ:
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
.