Si j'ai ce tableau
arra[0]='Debian'
arra[1]='Debian'
arra[2]='Ubuntu'
arra[3]='Suse'
Comment puis-je stocker dans un nouveau tableau uniquement Debian, Ubuntu et Suse ? comme ceci
new[0]='Debian'
new[1]='Ubuntu'
new[2]='Suse'
Si j'ai ce tableau
arra[0]='Debian'
arra[1]='Debian'
arra[2]='Ubuntu'
arra[3]='Suse'
Comment puis-je stocker dans un nouveau tableau uniquement Debian, Ubuntu et Suse ? comme ceci
new[0]='Debian'
new[1]='Ubuntu'
new[2]='Suse'
Une réponse qui fonctionne :
eval newArray=($(for i in "${arra[@]}" ; do echo "\"$i\"" ; done | sort -u))
Il fonctionne avec les espaces dans les éléments de votre tableau comme dans 'Red Hat'
: vous devez imprimer une citation ""
autour de votre valeur variable ("\"$i\"")
et eval
le résultat.
Une alternative plus élégante
eval newArray=($(printf "%q\n" "${arra[@]}" | sort -u))
où le format %q
est nécessaire pour citer la sortie de printf
.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.